[Gc]: GC + Windows Mobile + Threads + Patch for WINCE

biosli biosli at hotmail.com
Thu Nov 5 23:31:11 PST 2009


Hi!

 

> > > Ok. Retry without -DGC_GCJ_SUPPORT -DATOMIC_UNCOLLECTABLE -DTHREAD_LOCAL_ALLOC -DPARALLEL_MARK -DGC_ASSERTIONS -DMAKE_BACK_GRAPH. If it works without a Data Abort, try to find out which "define" option influences it (by adding them back one-by-one).
> > 
> > I test again with macro -DALL_INTERIOR_POINTERS -DGC_GCJ_SUPPORT -DATOMIC_UNCOLLECTABLE -DNO_DEBUGGING -DGC_THREADS -DUSE_MUNMAP -DTHREAD_LOCAL_ALLOC -DPARALLEL_MARK -DGC_ASSERTIONS -DMAKE_BACK_GRAPH -DGC_MIN_MARKERS=2 /link /stack:65536
> > and -DVERY_SMALL_CONFIG
> .............. 
> Well, it looks like that problem hasn't been solved, you just hadn't run the test that many times to observe it. Try to set a breakpoint on "goto handle_ex" in mark.c and tell me whether it ever be hit (if yes then this is that old problem).

 

Yes, as you said the "goto handle_ex"(mark.c(GC_mark_some) Line: 519 ) was hit. It seems the old problem.

 


> The attachment tells me really little...
> It seems like an object had allocated for GC_thread entry has remained marked as free and been reused at some place. But I don't the see how this happens...
> 
> I'd like to reproduce the case (on Win32). Tell me please:
> - your OS, CPU cores count, your compiler;

OS: Windows XP Professional, SP 3.

CPU: 2 cores.

compiler: VS 2005 VC++ cl.exe 14.0.50727.762

 

> - full list of parameters you compiled and linked test.c with (including the contents of stdafx.h if you still use it).
------------stdafx.h copy as following-------------

#define WIN32_LEAN_AND_MEAN


#include <windows.h>

 

#pragma warning(error: 4013) // function undefined; assuming extern returning int

 

#ifdef _MT
#  define GC_THREADS 1
#endif

 

#ifdef _DEBUG
#  define GC_DEBUG
#endif

 

#define SILENT 1

 

#define __STDC__ 1

 

//-DMAKE_BACK_GRAPH 
#ifndef MAKE_BACK_GRAPH
# define MAKE_BACK_GRAPH
#endif //MAKE_BACK_GRAPH

 

//-DGC_PRINT_VERBOSE_STATS
#ifndef GC_PRINT_VERBOSE_STATS
# define GC_PRINT_VERBOSE_STATS
#endif //GC_PRINT_VERBOSE_STATS

 

//-DDEBUG_THREADS
#ifndef DEBUG_THREADS
# define DEBUG_THREADS
#endif //DEBUG_THREADS

 

//#define SAVE_CALL_CHAIN

 

//#define SAVE_CALL_COUNT 8
----------------------

 

test.c diff, as below:

-----------------------

Index: test.c
===================================================================
--- test.c (revision 311)
+++ test.c (revision 312)
@@ -18,10 +18,16 @@
 /* GC.  It uses GC internals to allow more precise results      */
 /* checking for some of the tests.                              */
 
+#ifndef GC_THREADS
+#  define GC_THREADS 1
+#endif //GC_THREADS
+
 # ifdef HAVE_CONFIG_H
 #   include "private/config.h"
 # endif
 
+#define VERY_SMALL_CONFIG
+
 # undef GC_BUILD
 
 #if (defined(DBG_HDRS_ALL) || defined(MAKE_BACK_GRAPH)) && !defined(GC_DEBUG)

----------------------------------

 

Bye.

 		 	   		  
_________________________________________________________________
上Windows Live 中国首页,下载Messenger2009安全版!
http://www.windowslive.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://napali.hpl.hp.com/pipermail/gc/attachments/20091106/af7df6b3/attachment.htm


More information about the Gc mailing list