dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DotGNU]I have a really really strange problem. Expecting marshalling bu


From: Ilyak Kasnacheev
Subject: [DotGNU]I have a really really strange problem. Expecting marshalling bug.
Date: Sat, 27 Nov 2004 00:42:03 +0300
User-agent: KMail/1.6.2

Hi everyone!

I can see only one source of my IceRegisterForProtocolSetup problem: we have 
bug in marshalling code somewhere.

Look, how, do you think, will these two pieces of code differ?:
==
ICE.IcePoAuthProcIncapsulator authProc = new ICE.IcePoAuthProcIncapsulator(new  
  IcePoAuthProc(ICE._IcePoMagicCookie1Proc));
ICE.IceRegisterForProtocolSetup
  ("DUMMY", "DUMMY", "DUMMY",
  (Xlib.Xint)1, ref version,
  (Xlib.Xint)1, authNames, ref authProc, null);
majorOpcode = (int)ICE.IceRegisterForProtocolSetup
  ("DCOP", "KDE", "2.0",
  (Xlib.Xint)1, ref version,
  (Xlib.Xint)1, authNames, ref authProc, null);
== and
ICE.IcePoAuthProcIncapsulator authProc = new ICE.IcePoAuthProcIncapsulator(new  
 
  IcePoAuthProc(ICE._IcePoMagicCookie1Proc));
ICE.IceRegisterForProtocolSetup                                                 
  
  ("DUMMY", "DUMMY", "DUMMY",                                                   
           
  (Xlib.Xint)1, ref version,                                                    
  
  (Xlib.Xint)1, authNames, ref authProc, null);
ICE.IcePoAuthProcIncapsulator authProc1 = new   
  ICE.IcePoAuthProcIncapsulator(new 
  IcePoAuthProc(ICE._IcePoMagicCookie1Proc));                                   
                                    
majorOpcode = (int)ICE.IceRegisterForProtocolSetup
  ("DCOP", "KDE", "2.0",                                                        
   
  (Xlib.Xint)1, ref version,                                                    
  
  (Xlib.Xint)1, authNames, ref authProc1, null);
==
(The only difference is different (but identical) authprocs used in 2 and, 
same in 1)

The difference is that they give:
==
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1073879904 (LWP 2695)]
0x0000ffdb in ?? ()
(gdb) bt
#0  0x0000ffdb in ?? ()
#1  0x43ee2732 in IceProcessMessages () from /usr/X11R6/lib/libICE.so.6
#2  0x43ee4d82 in _IceProcessCoreMessage () from /usr/X11R6/lib/libICE.so.6
#3  0x43ee0aa5 in IceProcessMessages () from /usr/X11R6/lib/libICE.so.6
#4  0x43ee52f6 in IceProtocolSetup () from /usr/X11R6/lib/libICE.so.6
#5  0x080d78d3 in ffi_call_SYSV () at src/x86/sysv.S:59
#6  0x080d7899 in ffi_raw_call (cif=0x8370dc0,
    fn=0x43ee4e70 <IceProtocolSetup>, rvalue=0x0, fake_avalue=0xbffff048)
    at src/x86/ffi.c:515
#7  0x08094c12 in _ILCVMInterpreter (thread=0x8157e70) at cvm_call.c:855
#8  0x0804c3d8 in _ILCallMethod (thread=0x8157e70, method=0x40296370,
    unpack=0x804c25c <_ILCallUnpackVResult>, result=0xbffff6e0, isCtor=0,
    _this=0x0, pack=0x804bfa4 <_ILCallPackVParams>, userData=0xbffff6f0)
    at call.c:706
#9  0x0804c6ad in ILExecThreadCallV (thread=0x8157e70, method=0x40296370,
    result=0xbffff6e0, args=0xbffff6f0) at call.c:928
#10 0x0804bb6c in main (argc=2, argv=0xbffff7a4) at ilrun.c:494
== and
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1073879904 (LWP 2795)]
0x0000ffdb in ?? ()
(gdb) bt
#0  0x0000ffdb in ?? ()
#1  0x43ee0a56 in IceProcessMessages () from /usr/X11R6/lib/libICE.so.6
#2  0x080d78d3 in ffi_call_SYSV () at src/x86/sysv.S:59
#3  0x080d7899 in ffi_raw_call (cif=0x8366330,
    fn=0x43ee0730 <IceProcessMessages>, rvalue=0xffdb, fake_avalue=0x0)
    at src/x86/ffi.c:515
#4  0x08094c12 in _ILCVMInterpreter (thread=0x8157e70) at cvm_call.c:855
#5  0x0804c3d8 in _ILCallMethod (thread=0x8157e70, method=0x40296370,
    unpack=0x804c25c <_ILCallUnpackVResult>, result=0xbffff6e0, isCtor=0,
    _this=0x0, pack=0x804bfa4 <_ILCallPackVParams>, userData=0xbffff6f0)
    at call.c:706
#6  0x0804c6ad in ILExecThreadCallV (thread=0x8157e70, method=0x40296370,
    result=0xbffff6e0, args=0xbffff6f0) at call.c:928
#7  0x0804bb6c in main (argc=2, argv=0xbffff7a4) at ilrun.c:494
==

For me, that looks like:

After some function marshalling, n+1'th marshalled function gets b0rked.
Looks like it depend on number of marshallings, as in 
IcePoAuthProcIncapsulator..ctor, and callings with marshalled as argument, as 
in IceRegisterForProtocolSetup (Problem arose as: If i called this function 
once, it worked, but i needed to call it twice - and it stopped to work).


P.S. If in 2nd piece i will do second call with authProc, it will do 1st 
segfault-scenario.
Looks like authProc is created correctly for first time, but b0rked on second 
creation.

Any more specifics needed? You can look background of these code pieces at 
Xsharp/Ice dir.

P.P.S. Update: With second scenario, program runs farther than with first one. 
Maybe, authProcs somehow b0rks itself after first function call?..

P.P.P.S. Update: Muuuch farther, it passes much deeper into DCOP protocol 
handling, maybe second segfault now is my problem, not engine's.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]