[Gc] RE: GC ported to AIX pthreads

Boehm, Hans hans_boehm@hp.com
Fri, 30 May 2003 17:59:26 -0700


[I'm continuing this on the GC list, for future reference.  For those just joining us,
Dan Bonachea contributed an AIX threads port, as well as some Irix patches/observations.]

I will integrate the patch into my tree, making some adjustments.  I would appreciate
help in testing the result.  In spite of previous intentions, I will release a 6.2alpha6
with both Brian's and Dan's patches.  Both patches are large and very useful, so I
decided to tolerate more instability than planned.  I hope and expect the impact
on other platforms to be small.

As I already mentioned to Dan, a lot of this code should eventually be restructured to
fit with Brian's code.  But I don't think that's pressing.

It doesn't look like the direct conflicts with Brian's Darwin patch are major.
But there are some changes to linux_threads.c, for example, which no longer exists.

> -----Original Message-----
> From: Dan Bonachea [mailto:bonachea@cs.berkeley.edu]
> Sent: Friday, May 30, 2003 2:25 AM
> To: Boehm Hans
> Subject: RE: GC ported to AIX pthreads
> 
...
> >3) MPROTECT_VDB used to work on Irix.  I suspect something 
> fairly trivial
> >(signal handler arguments handling?) broke somewhere along the line.
> 
> You may be right - however I've never worked on the code which uses 
> MPROTECT_VDB, so I'm probably not the right person to debug 
> it for you. Here's 
> the gctest-MPROTECT_VDB crash stack, in case that's helpful:
> 
> #0  0x10012b14 in GC_find_limit (p=0x7ffeb5c0 "", up=1)
>      at 
> /u/ac/bonachea/Ti/src-gc/runtime/gc-build/uniproc/../../gc/os_
> dep.c:647
> #1  0x10012bcc in GC_get_stack_base ()
>      at 
> /u/ac/bonachea/Ti/src-gc/runtime/gc-build/uniproc/../../gc/os_
> dep.c:806
> #2  0x1000a2a4 in GC_init_inner ()
>      at 
> /u/ac/bonachea/Ti/src-gc/runtime/gc-build/uniproc/../../gc/misc.c:607
> #3  0x1000a5d0 in GC_enable_incremental ()
>      at 
> /u/ac/bonachea/Ti/src-gc/runtime/gc-build/uniproc/../../gc/misc.c:741
> #4  0x10009428 in main ()
>      at 
> /u/ac/bonachea/Ti/src-gc/runtime/gc-build/uniproc/../../gc/tes
> ts/test.c:1463
> 
> I looked over GC_find_limit and couldn't find anything 
> obvious wrong with it, 
> although there are some vague comments referring to IRIX 5 vs 
> 6... I have no 
> idea why the SIGSEGV is still being delivered despite the 
> sigaction which 
> should suspend it...
> However, in the short-term disabling MPROTECT_VDB fixes the problem.

Is this the real problem?  Does it die there?  Or is gdb just catching the
SIGSEGV signal which should be delivered at that point?

Hans