[Gc] Back to "GC Stack problem on Win32" - refinement

Boehm, Hans hans.boehm at hp.com
Thu Feb 26 22:24:45 PST 2009


I've had a patch (attached, against CVS) in my tree for a while that I think started with Ivan's diff36 and diff37, and then made yet another attempt to restructure the surrounding code.  (Diff36 and diff37 are Ivan's originals.)

My concern is that I've been seeing occasional failures, particularly with the win32 (32 bit) version (NT_STATIC_THREADS_MAKEFILE) after applying this patch.  (I'm compiling with VS2005.)  It's possible that these failures existed all along.  But they look like either a piece of the stack or some relevant registers are not getting scanned.  The failure seems to occur without triggering any assertion failures, even after adding the fairly expensive assertion here.  They seem to generally occur in reverse_test, but may occur during manipulation of data referenced only by the stack.  Static root finding doesn't seem to be the issue.

Has anyone else still been seeing intermittent failures on win32?

AFAICT, these failures are specific to Windows, but seem to occur with and without thread-local allocation.  I haven't seen them without threads, but I also haven't tried aggressively to reproduce them without threads.  I have spent some time stepping through and staring at the marking code, and haven't yet found a problem.  I didn't see a pending patch in my mail box that could clearly address this.  It may be limited to incremental GC; I haven't pursued that yet.

Hans

> -----Original Message-----
> From: gc-bounces at napali.hpl.hp.com 
> [mailto:gc-bounces at napali.hpl.hp.com] On Behalf Of Ivan Maidanski
> Sent: Saturday, November 01, 2008 11:20 AM
> To: gc at napali.hpl.hp.com
> Subject: [Gc] Back to "GC Stack problem on Win32" - refinement
> 
> Hi!
> 
> One refinement for GC_push_stack_for() implementation (and to 
> my previous patch): if we are in the current thread then it's 
> always safe to use "sp" value, so we may use it (if lesser) 
> instead of last known stack_min for probing stack memory page.
> 
> The attached patch does this.
> 
> PS. With this post (diff37) I feel now I've changed/fixed all 
> (in general) what I'd wanted to (before sending diff1). But 
> I'm still continuing testing GC (and reviewing CVS changes)...
> 
> Bye.
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff37
Type: application/octet-stream
Size: 727 bytes
Desc: diff37
Url : http://napali.hpl.hp.com/pipermail/gc/attachments/20090227/0ed8d5ff/diff37.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: win32_threads.c.diff
Type: application/octet-stream
Size: 2095 bytes
Desc: win32_threads.c.diff
Url : http://napali.hpl.hp.com/pipermail/gc/attachments/20090227/0ed8d5ff/win32_threads.c.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff36
Type: application/octet-stream
Size: 713 bytes
Desc: diff36
Url : http://napali.hpl.hp.com/pipermail/gc/attachments/20090227/0ed8d5ff/diff36.obj


More information about the Gc mailing list