I need hints on how to find occasional segmentation faults and missed GC references. This relates to 64 bit machines.
Background: When I started using 64 bit machines a few years ago most of guile fine after I converted my modules to 64 bit code. Apart from changes in my own C-code the only thing I changed in guile was size of uvect,ivect in unif.c cells as they by default become 64 bit long instead of 32 bit. My 64 bits are dual-CPU/core though so it may be related to that (still using guile 1.7) but I don't have any problem on dual CPU 32 bits systems. My modules have worked perfectly fine on 32 bit machines but on 64 bits I occasionally get something like #<freed cell 0x2...; GC missed a reference> if I run that code fast, which indicates a threading problem (I do not use threads in this case, but seems like guile does). This does not occur if I run guile through gdb. This happens not too often but it seems to be related to string->symbol symbol->string. My bigger problem though is frequently occurring segmentation faults or otherwise corrupt pointers. If I then run the code in gdb I can get Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x2ae316e4f070 (LWP 6699)] 0x00002ae314b9d091 in scm_gc_mark_dependencies (p=0x97c) at gc-mark.c:441 441 if (SCM_GC_MARK_P (ptr)) Current language: auto; currently c Grateful for any hints to trace these kinds of problems. Roland Orre
