* Mono applications build mostly now after some bugfixes for both mono and DragonFly itself. Applications even run, but die after some seconds of work with following backtrace:
Core was generated by `mono'. Program terminated with signal 4, Illegal instruction. #0 0x28265a8c in symlook_list (name=0x804f74b "waitpid", hash=226539140, objlist=0x28286408, defobj_out=0xbf9fe1d0, in_plt=1 '\001', dlp=0xbf9fe1d4) at /home/hasso/dragonfly-src/libexec/rtld-elf/rtld.c:2412 2412 { (gdb) bt #0 0x28265a8c in symlook_list (name=0x804f74b "waitpid", hash=226539140, objlist=0x28286408, defobj_out=0xbf9fe1d0, in_plt=1 '\001', dlp=0xbf9fe1d4) at /home/hasso/dragonfly-src/libexec/rtld-elf/rtld.c:2412 #1 0x282660cc in symlook_default (name=0x804f74b "waitpid", hash=226539140, refobj=0x28295000, defobj_out=0xbf9fe21c, in_plt=1 '\001') at /home/hasso/dragonfly-src/libexec/rtld-elf/rtld.c:2356 #2 0x28266fc0 in find_symdef (symnum=51, refobj=0x28295000, defobj_out=0xbf9fe26c, in_plt=1 '\001', cache=0x0) at /home/hasso/dragonfly-src/libexec/rtld-elf/rtld.c:1044 #3 0x28267395 in _rtld_bind (obj=0x28295000, reloff=96, stack=0xbf9fe2a8) at /home/hasso/dragonfly-src/libexec/rtld-elf/rtld.c:565 #4 0x282652d6 in _rtld_bind_start () at /home/hasso/dragonfly-src/libexec/rtld-elf/i386/rtld_start.S:83 #5 0x28295000 in ?? () #6 0x081850d3 in ?? () #7 0x08193256 in ?? () #8 0x08180e8d in ?? () #9 0x283849c3 in thread_start (arg=0x284a0150) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_create.c:241 #10 0x00000000 in ?? () * After applying the attached patch it's possible to compile www/firefox3 with jemalloc support (would be a good test to compare it with our malloc). The problem is that it goes into infinite loop, seems: Core was generated by `firefox-bin'. Program terminated with signal 11, Segmentation fault. #0 0x2809af80 in malloc_init_hard () at jemalloc.c:5194 5194 { (gdb) bt #0 0x2809af80 in malloc_init_hard () at jemalloc.c:5194 #1 0x2809c6c1 in malloc (size=224) at jemalloc.c:5183 #2 0x2809379e in _thr_alloc (curthread=0x0) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_list.c:171 #3 0x2809201c in _libpthread_init (curthread=0x0) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_init.c:215 #4 0x2809167a in __pthread_mutex_lock (m=0x2809ef74) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_private.h:791 #5 0x2809af9e in malloc_init_hard () at jemalloc.c:1254 #6 0x2809c6c1 in malloc (size=224) at jemalloc.c:5183 #7 0x2809379e in _thr_alloc (curthread=0x0) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_list.c:171 #8 0x2809201c in _libpthread_init (curthread=0x0) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_init.c:215 #9 0x2809167a in __pthread_mutex_lock (m=0x2809ef74) at /home/hasso/dragonfly-src/lib/libthread_xu/thread/thr_private.h:791 #10 0x2809af9e in malloc_init_hard () at jemalloc.c:1254 #11 0x2809c6c1 in malloc (size=224) at jemalloc.c:5183 #12 0x2809379e in _thr_alloc (curthread=0x0) etc etc Any help to track these problems down is welcome. -- Hasso Tepper
Index: distinfo =================================================================== RCS file: /NetBSD/pkgsrc/www/firefox3/distinfo,v retrieving revision 1.24 diff -u -p distinfo --- distinfo 28 Apr 2009 09:14:25 -0000 1.24 +++ distinfo 29 Apr 2009 07:15:38 -0000 @@ -4,10 +4,11 @@ SHA1 (firefox-3.0.10-source.tar.bz2) = 67f74cac153d37a RMD160 (firefox-3.0.10-source.tar.bz2) = 301ecfe77eef5d0b698b1f1d340b952b1a59ab39 Size (firefox-3.0.10-source.tar.bz2) = 37081374 bytes SHA1 (patch-aa) = f995b5e53fa11ecb659ab2dd10551db1c71cc5f3 -SHA1 (patch-ab) = 4a1704e96b74c76adca615fdf2c9069ca17e9d70 +SHA1 (patch-ab) = e64e0a557301fc0412ea5e3d59fbccf6335e00cf SHA1 (patch-ac) = af80f061bdd918a61197c9c499e7d1f5b7d10ebd SHA1 (patch-ad) = 20f2184a7e5e98b065e884c67e4c17fc52019a79 SHA1 (patch-ae) = fea251aabc772c3d4ad3044c8295af45cc9cab2d +SHA1 (patch-af) = 63c226a1ac9db1595a610693fd1fa35f91caf795 SHA1 (patch-ap) = 552694ac2d6ca713aec98ec394f1215c048c2392 SHA1 (patch-ax) = cbfe7a6392d5d2fefff123679ba1c056b1cc0aa9 SHA1 (patch-ba) = 3bd713cf2edcc61f489cea8269ca60e27c26f1d9 Index: patches/patch-ab =================================================================== RCS file: /NetBSD/pkgsrc/www/firefox3/patches/patch-ab,v retrieving revision 1.3 diff -u -p patches/patch-ab --- patches/patch-ab 20 Apr 2009 12:13:03 -0000 1.3 +++ patches/patch-ab 29 Apr 2009 07:15:38 -0000 @@ -1,7 +1,7 @@ $NetBSD: patch-ab,v 1.3 2009/04/20 12:13:03 hasso Exp $ --- configure.in.orig 2008-11-21 21:37:59 +0200 -+++ configure.in 2009-04-20 13:37:54 +0300 ++++ configure.in 2009-04-22 05:48:49 +0300 @@ -1700,7 +1700,7 @@ case "$target" in LDFLAGS=$_SAVE_LDFLAGS ;; @@ -21,7 +21,7 @@ $NetBSD: patch-ab,v 1.3 2009/04/20 12:13:03 hasso Exp ;; *-hpux*) -@@ -2230,7 +2233,14 @@ case "$target" in +@@ -2230,8 +2233,15 @@ case "$target" in if test "$LIBRUNPATH"; then DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" fi @@ -29,13 +29,14 @@ $NetBSD: patch-ab,v 1.3 2009/04/20 12:13:03 hasso Exp + alpha*) + CFLAGS="$CFLAGS -mieee" + CXXFLAGS="$CXXFLAGS -mieee" - ;; -+ esac + ;; -+ ++ esac + ;; ++ *-openvms*) AC_DEFINE(NO_PW_GECOS) + AC_DEFINE(NO_UDSOCK) @@ -2979,6 +2989,9 @@ dnl ==================================== case $target in *-hpux11.*) @@ -55,3 +56,13 @@ $NetBSD: patch-ab,v 1.3 2009/04/20 12:13:03 hasso Exp fi MOZ_ARG_ENABLE_STRING(optimize, +@@ -6319,6 +6332,9 @@ if test "$MOZ_MEMORY"; then + netbsd*) + AC_DEFINE(MOZ_MEMORY_BSD) + ;; ++ dragonfly*) ++ AC_DEFINE(MOZ_MEMORY_BSD) ++ ;; + solaris*) + AC_DEFINE(MOZ_MEMORY_SOLARIS) + ;; ? patches/patch-af --- /dev/null 2009-04-29 09:52:49 +0300 +++ patches/patch-af 2009-04-29 10:00:51 +0300 @@ -0,0 +1,119 @@ +--- memory/jemalloc/jemalloc.c.orig 2008-11-19 09:16:19 +0200 ++++ memory/jemalloc/jemalloc.c 2009-04-29 08:44:01 +0300 +@@ -337,7 +337,7 @@ __FBSDID("$FreeBSD: src/lib/libc/stdlib/ + #endif + + #ifdef MOZ_MEMORY_DARWIN +-static const bool __isthreaded = true; ++static const bool __isfthreaded = true; + #endif + + #define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var)) +@@ -382,7 +382,7 @@ static const bool __isthreaded = true; + #endif + #define PIC + #ifndef MOZ_MEMORY_DARWIN +-static const bool __isthreaded = true; ++static const bool __isfthreaded = true; + #else + # define NO_TLS + #endif +@@ -1216,7 +1216,7 @@ static bool + malloc_mutex_init(malloc_mutex_t *mutex) + { + #if defined(MOZ_MEMORY_WINDOWS) +- if (__isthreaded) ++ if (__isfthreaded) + if (! __crtInitCritSecAndSpinCount(mutex, _CRT_SPINCOUNT)) + return (true); + #elif defined(MOZ_MEMORY_DARWIN) +@@ -1253,7 +1253,7 @@ malloc_mutex_lock(malloc_mutex_t *mutex) + #elif defined(MOZ_MEMORY) + pthread_mutex_lock(mutex); + #else +- if (__isthreaded) ++ if (__isfthreaded) + _SPINLOCK(&mutex->lock); + #endif + } +@@ -1269,7 +1269,7 @@ malloc_mutex_unlock(malloc_mutex_t *mute + #elif defined(MOZ_MEMORY) + pthread_mutex_unlock(mutex); + #else +- if (__isthreaded) ++ if (__isfthreaded) + _SPINUNLOCK(&mutex->lock); + #endif + } +@@ -1278,7 +1278,7 @@ static bool + malloc_spin_init(malloc_spinlock_t *lock) + { + #if defined(MOZ_MEMORY_WINDOWS) +- if (__isthreaded) ++ if (__isfthreaded) + if (! __crtInitCritSecAndSpinCount(lock, _CRT_SPINCOUNT)) + return (true); + #elif defined(MOZ_MEMORY_DARWIN) +@@ -1313,7 +1313,7 @@ malloc_spin_lock(malloc_spinlock_t *lock + #elif defined(MOZ_MEMORY) + pthread_mutex_lock(lock); + #else +- if (__isthreaded) ++ if (__isfthreaded) + _SPINLOCK(&lock->lock); + #endif + } +@@ -1328,7 +1328,7 @@ malloc_spin_unlock(malloc_spinlock_t *lo + #elif defined(MOZ_MEMORY) + pthread_mutex_unlock(lock); + #else +- if (__isthreaded) ++ if (__isfthreaded) + _SPINUNLOCK(&lock->lock); + #endif + } +@@ -1383,7 +1383,7 @@ malloc_spin_lock(pthread_mutex_t *lock) + { + unsigned ret = 0; + +- if (__isthreaded) { ++ if (__isfthreaded) { + if (_pthread_mutex_trylock(lock) != 0) { + unsigned i; + volatile unsigned j; +@@ -1416,7 +1416,7 @@ static inline void + malloc_spin_unlock(pthread_mutex_t *lock) + { + +- if (__isthreaded) ++ if (__isfthreaded) + _pthread_mutex_unlock(lock); + } + #endif +@@ -2558,7 +2558,7 @@ choose_arena(void) + * introduces a bootstrapping issue. + */ + #ifndef NO_TLS +- if (__isthreaded == false) { ++ if (__isfthreaded == false) { + /* Avoid the overhead of TLS for single-threaded operation. */ + return (arenas[0]); + } +@@ -2574,7 +2574,7 @@ choose_arena(void) + assert(ret != NULL); + } + #else +- if (__isthreaded && narenas > 1) { ++ if (__isfthreaded && narenas > 1) { + unsigned long ind; + + /* +@@ -2631,7 +2631,7 @@ choose_arena_hard(void) + { + arena_t *ret; + +- assert(__isthreaded); ++ assert(__isfthreaded); + + #ifdef MALLOC_BALANCE + /*