Actually, you can probably scratch that (though I'd still be interested in seeing the 
source to what you're working on :)

That bug turned out to be a stupid error in that function's error handling. Fixing 
this revealed the real bug, somewhere in the handle code. This is probably that same 
bug that bothered me a while back and I thought I killed...

It does not appear to be related to the fraction sizing, as it happens with all the 
apps I have tested it with.
Here is the way I can reproduce it:

        - Compile pgserver with handle debugging
        - Compile the demos, and the pseudo3d theme
        - Run it, with a command like:
./pgserver ../cli_c/demos/calc 2>&1 | grep handle | tee errlog
        - Run the following command and press enter to kill it:
../cli_c/demos/themedemo ../themetools/examples/pseudo3d.th
        - Repeat the themedemo command for a total of 9 cycles
        - The panelbar on Calculator should be corrupted

Handle logs show that it is unable to read a recently created handle (presumably from 
the theme load)
Interestingly, this also coincides with the handle number generator wrapping back 
around to small numbers. This means that the handles are being added to the opposite 
side of the tree.

I am about 90% sure this is a problem with the red/black tree that has been here for 
quite a while, because it would also explain some of the mysterious "handle not found" 
errors when running omnibar.

I'm going to look through the logs and code some more. Some other things that might 
help with this is if I made some better handle debugging tools, including maybe a tool 
to graphically display the trees (handle, div, etc.)
Or, I could just scrap the whole of handle.c and write a new red/black tree...

On Sat, 07 April 2001, Micah Dowty wrote:

> 
> I have seen this before, and I thought I got rid of it. The following details would 
>be extremely helpful:
>     - Source code of the client that causes this
>     - A stack backtrace
>     - The values of p and x
>     - complete server output with handle debugging on
> 
> This will be big, so please send to me directly. (list limits attachments to 40k)
> 
> 
> On Fri, 06 April 2001, Philippe Ney wrote:
> 
> > 
> > By the way, I got many times the following error:
> > 
> > freeze of the app and the following info in gdb running pgserver
> > 
> > ---------8<---------------------------
> > ...
> > Program received signal SIGSEGV, Segmentation fault.
> > rdhandle (p=0xbffff63c, reqtype=1, owner=-1, h=41472) at gcore/handle.c:408
> > 408         *p = *x;
> > 
> > ... (kill and restart)
> > 
> > Program received signal SIGSEGV, Segmentation fault.
> > rdhandle (p=0xbffff550, reqtype=1, owner=-1, h=18304) at gcore/handle.c:408
> > 408         *p = *x;
> > 
> > ... (kill and restart)
> > 
> > Program received signal SIGSEGV, Segmentation fault.
> > rdhandle (p=0xbffff640, reqtype=1, owner=-1, h=34592) at gcore/handle.c:408
> > 408         *p = *x;
> > ---------8<---------------------------
> > 
> > And the debug info with the settings:
> > [*] Widget debugging
> > [*] Event debugging
> > [ ] Video debugging
> > [*] Theme debugging
> > [ ] Client/server debugging
> > [ ] Initialization debugging
> > [*] Memory debugging
> > [*] Mirror guru() output on stderr
> > of the server gives:
> > 
> > ---------8<---------------------------
> > ...
> > -2317 #198 (35032) 0x0808E0FC
> > -28 #197 (35004) 0x0808BC74
> > -7 #196 (34997) 0x0807FC24
> > -28 #195 (34969) 0x08079CEC
> > theme_lookup(0x0000,0x001A) = (not found)
> > theme_lookup(0x0000,0x001B) = (not found)
> > theme_lookup(0x0018,0x0009) = 0x00000003
> > theme_lookup(0x0003,0x0007) = 0x00000014
> > theme_lookup(0x000B,0x0009) = 0x00000003
> > theme_lookup(0x000B,0x0007) = 0x00000011
> > theme_lookup(0x001B,0x0016) = 0x00000020
> > theme_lookup(0x001B,0x0007) = 0x00000011
> > theme_lookup(0x001B,0x0008) = 0x00000011
> > theme_lookup(0x001B,0x0009) = 0x00000003
> > theme_lookup(0x001D,0x0005) = (not found)
> > theme_lookup(0x001B,0x0014) = 0x00000000
> > theme_lookup(0x001F,0x0016) = 0x00000040
> > theme_lookup(0x001F,0x0007) = 0x00000011
> > theme_lookup(0x001F,0x0008) = 0x00000011
> > theme_lookup(0x001F,0x0009) = 0x00000003
> > theme_lookup(0x001F,0x0005) = (not found)
> > theme_lookup(0x001F,0x0014) = 0x00000000
> > theme_lookup(0x0022,0x0016) = 0x00000040
> > theme_lookup(0x0022,0x0007) = 0x00000011
> > theme_lookup(0x0022,0x0008) = 0x00000011
> > theme_lookup(0x0022,0x0009) = 0x00000003
> > theme_lookup(0x0022,0x0005) = (not found)
> > theme_lookup(0x0022,0x0014) = 0x00000000
> > theme_lookup(0x0003,0x0014) = 0x00000003
> > theme_lookup(0x0003,0x0008) = 0x00000014
> > theme_lookup(0x002C,0x0007) = (not found)
> > theme_lookup(0x002C,0x0008) = (not found)
> > theme_lookup(0x002C,0x0009) = 0x00000003
> > theme_lookup(0x002C,0x0005) = (not found)
> > theme_lookup(0x002C,0x000E) = 0x00000008
> > theme_lookup(0x002C,0x000F) = (not found)
> > theme_lookup(0x002C,0x0014) = 0x00000003
> > theme_lookup(0x002C,0x0007) = (not found)
> > theme_lookup(0x002C,0x0008) = (not found)
> > theme_lookup(0x002C,0x0009) = 0x00000003
> > theme_lookup(0x002C,0x0005) = (not found)
> > theme_lookup(0x002C,0x000E) = 0x00000008
> > theme_lookup(0x002C,0x000F) = (not found)
> > theme_lookup(0x002C,0x0014) = 0x00000003
> > theme_lookup(0x002C,0x0007) = (not found)
> > theme_lookup(0x002C,0x0008) = (not found)
> > theme_lookup(0x002C,0x0009) = 0x00000003
> > theme_lookup(0x002C,0x0005) = (not found)
> > theme_lookup(0x002C,0x000E) = 0x00000008
> > theme_lookup(0x002C,0x000F) = (not found)
> > theme_lookup(0x002C,0x0014) = 0x00000003
> > theme_lookup(0x0003,0x0014) = 0x00000003
> > theme_lookup(0x0003,0x0008) = 0x00000014
> > theme_lookup(0x002C,0x0007) = (not found)
> > theme_lookup(0x002C,0x0008) = (not found)
> > theme_lookup(0x002C,0x0009) = 0x00000003
> > Fatal signal: Segmentation Fault (SDL Parachute Deployed)
> > ---------8<---------------------------
> > 
> > 
> > And sometimes this in the client
> > 
> > ---------8<---------------------------
> > vfork -> child pid: 0
> > Init function
> > vfork -> child pid: 14119
> > *** PicoGUI ERROR (CLIENT) : recv error
> > *** PicoGUI ERROR (CLIENT) : Unexpected response type
> > Broken pipe
> > ---------8<---------------------------
> > 
> > Do you have any idea?
> > 
> > 
> > Philippe
> > 
> > _______________________________________________
> > Pgui-devel mailing list
> > [EMAIL PROTECTED]
> > http://lists.sourceforge.net/lists/listinfo/pgui-devel
> 
> --
> perl -e'socket S,2,1,tcp;connect S,pack(H16,"0200029a80692d32").\0x8;print 
> grep!/=/,<S>'
> 
> 
> _______________________________________________
> Pgui-devel mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/pgui-devel

--
perl -e'socket S,2,1,tcp;connect S,pack(H16,"0200029a80692d32").\0x8;print 
grep!/=/,<S>'


_______________________________________________
Pgui-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/pgui-devel

Reply via email to