pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/39012 (boehm-gc coredumps on GC_INIT under hpcmips (mipsel))
The following reply was made to PR pkg/39012; it has been noted by GNATS.
From: David Holland <dholland-pbugs%netbsd.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: pkg/39012 (boehm-gc coredumps on GC_INIT under hpcmips (mipsel))
Date: Wed, 31 Oct 2012 20:04:52 +0000
These two mails were never entered into gnats:
------
From: ben%wongs.net@localhost
To: recht%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
pkgsrc-bugs%netbsd.org@localhost,
ben%wongs.net@localhost
Subject: Re: pkg/39012 (boehm-gc coredumps on GC_INIT under hpcmips (mipsel))
Date: Mon, 7 Jul 2008 06:15:42 -0700
Additional information:
I have tried building boehm-gc from the latest pkgsrc and can now
provide a more precise backtrace.
Script started on Mon Jul 7 05:30:12 2008
bash-3.2# gdb ./a.out
GNU gdb 5.3nb1
Copyright 2002 Free Software Foundation, Inc.
This GDB was configured as "mipsel--netbsd"...
(gdb) run
Starting program: /usr/pkgsrc/devel/boehm-gc/work/gc-7.0/a.out
Program received signal SIGSEGV, Segmentation fault.
0x7df456e8 in GC_find_limit_with_bound () at os_dep.c:917
917 GC_noop1((word)(*result));
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x7df456e8 in GC_find_limit_with_bound () at os_dep.c:917
917 GC_noop1((word)(*result));
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x7df3b920 in GC_FirstDLOpenedLinkMap () at dyn_load.c:455
455 = ((struct r_debug *)(dp->d_un.d_ptr))->r_map;
(gdb) list
450 if( cachedResult == 0 ) {
451 int tag;
452 for( dp = _DYNAMIC; (tag = dp->d_tag) != 0; dp++ ) {
453 if( tag == DT_DEBUG ) {
454 struct link_map *lm
455 = ((struct r_debug *)(dp->d_un.d_ptr))->r_map;
456 if( lm != 0 ) cachedResult = lm->l_next; /*
might be NIL */
457 break;
458 }
459 }
(gdb) bt
#0 0x7df3b920 in GC_FirstDLOpenedLinkMap () at dyn_load.c:455
#1 0x7df3b9f0 in GC_register_dynamic_libraries () at dyn_load.c:475
#2 0x7df42cd0 in GC_push_roots () from ./.libs/libgc.so.1
#3 0x7df422d4 in GC_mark_some () from ./.libs/libgc.so.1
#4 0x7df3809c in GC_stopped_mark () from ./.libs/libgc.so.1
#5 0x7df384d8 in GC_try_to_collect_inner () from ./.libs/libgc.so.1
#6 0x00400adc in main (argc=1, argv=0x7fffdca4, envp=0x7fffdcac) at
gctest.c:7
(gdb) quit
The program is running. Exit anyway? (y or n) y
bash-3.2# exit
Script done on Mon Jul 7 05:31:04 2008
Note that the first two segfaults are red herrings. Apparently some
OSes (including NetBSD?) do not have a native way to find the
beginning and end of the main data segment, so boehm-gc must perform a
search at startup which causes segmentation faults.
The true bug appears to be releated to the dynamic library tracing
routines in dyn_load.c. The following page has helpful information
about the porting changes necessary to enable dynamic library support:
http://www.hpl.hp.com/personal/Hans_Boehm/gc/porting.html
The page also mentions that if DYNAMIC_LOADING is undefined in
gcconfig.h, tracing of dynamic library data will be disabled. This
might be a quick, if rather unsatisfying, way to get boehm-gc
"working" in NetBSD/mipsel.
--Ben
From: ben%wongs.net@localhost
To: recht%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
pkgsrc-bugs%netbsd.org@localhost,
ben%wongs.net@localhost
Subject: Re: pkg/39012 (boehm-gc coredumps on GC_INIT under hpcmips (mipsel))
Date: Sun, 20 Jul 2008 05:36:54 -0700
As I suspected, a quick work around is to simply disable
DYNAMIC_LOADING in the Boehm garbage collector. I have recompiled
gc-7.0 and verified that libgc works as expected (or, at least, it
doesn't dump core like the one currently available in pkgsrc).
I have a patch (below) which skips the #define of DYNAMIC_LOADING when
NETBSD and MIPSEL are defined. While this is not the optimal solution,
it is more correct then what is currently shipping. By the way, this
patch to boehm-gc will make the w3m package, and perhaps others,
compile cleanly instead of breaking.
--Ben
--- include/private/gcconfig.h.orig 2007-06-28 17:00:09.000000000 -0700
+++ include/private/gcconfig.h 2008-07-20 05:25:28.000000000 -0700
@@ -1397,7 +1397,13 @@
extern int etext[];
# define DATASTART GC_data_start
# define NEED_FIND_LIMIT
-# define DYNAMIC_LOADING
+/* Sadly, DYNAMIC_LOADING is broken for NetBSD/mipsel as of July 2008 */
+# ifdef __MIPSEL__
+# warning "DYNAMIC_LOADING support is broken for little endian MIPS"
+# undef DYNAMIC_LOADING
+# else
+# define DYNAMIC_LOADING
+# endif /* __MIPSEL__ */
# else
# define DATASTART ((ptr_t) 0x10000000)
# define STACKBOTTOM ((ptr_t) 0x7ffff000)
On 7/7/08, ben%wongs.net@localhost <ben%wongs.net@localhost> wrote:
> Additional information:
> [[snipped by dholland]]
Home |
Main Index |
Thread Index |
Old Index