maintainer-feedback requested: [Bug 200937] lang/mono: [patch] mono-sgen SIGSEGV during build
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Jun 17 18:19:40 UTC 2015
Thomas Hurst <tom at hur.st> has reassigned Bugzilla Automation
<bugzilla at FreeBSD.org>'s request for maintainer-feedback to mono at FreeBSD.org:
Bug 200937: lang/mono: [patch] mono-sgen SIGSEGV during build
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200937
--- Description ---
Created attachment 157839
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=157839&action=edit
Patch: increase _WAPI_PRIVATE_MAX_SLOTS
System: FreeBSD 10.1-STABLE #0 r283969: Wed Jun 3 22:59:38 BST 2015
Dual hex-core Westmere Xeon, 155GB RAM.
For a while now lang/mono's been segfaulting during build:
------------------------------------------------------------------------
Making all in runtime
gmake[3]: Entering directory
'/usr/obj/usr/ports/lang/mono/work/mono-4.0.1/runtime'
if test -w /usr/obj/usr/ports/lang/mono/work/mono-4.0.1/mcs; then :; else chmod
-R +w /usr/obj/usr/ports/lang/mono/work/mono-4.0.1/mcs; fi
cd /usr/obj/usr/ports/lang/mono/work/mono-4.0.1/mcs && gmake
--no-print-directory -s NO_DIR_CHECK=1 PROFILES='binary_reference_assemblies
net_4_5 xbuild_12 xbuild_14 ' CC='cc' all-profiles
gmake[7]: mcs: Command not found
build/profiles/basic.make:93: recipe for target
'build/deps/basic-profile-check.exe' failed
gmake[7]: *** [build/deps/basic-profile-check.exe] Error 127
*** The compiler 'mcs' doesn't appear to be usable.
*** Trying the 'monolite' directory.
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
build/profiles/basic.make:93: recipe for target
'build/deps/basic-profile-check.exe' failed
gmake[9]: *** [build/deps/basic-profile-check.exe] Abort trap (core dumped)
*** The contents of your 'monolite' directory may be out-of-date
*** You may want to try 'make get-monolite-latest'
build/profiles/basic.make:77: recipe for target 'do-profile-check-monolite'
failed
gmake[9]: *** [do-profile-check-monolite] Error 1
build/profiles/basic.make:60: recipe for target 'do-profile-check' failed
gmake[8]: *** [do-profile-check] Error 2
build/profiles/basic.make:85: recipe for target 'do-profile-check-monolite'
failed
gmake[7]: *** [do-profile-check-monolite] Error 2
build/profiles/basic.make:60: recipe for target 'do-profile-check' failed
gmake[6]: *** [do-profile-check] Error 2
Makefile:44: recipe for target 'profile-do--basic--all' failed
gmake[5]: *** [profile-do--basic--all] Error 2
Makefile:40: recipe for target 'profiles-do--all' failed
gmake[4]: *** [profiles-do--all] Error 2
Makefile:555: recipe for target 'all-local' failed
gmake[3]: *** [all-local] Error 2
gmake[3]: Leaving directory
'/usr/obj/usr/ports/lang/mono/work/mono-4.0.1/runtime'
Makefile:522: recipe for target 'all-recursive' failed
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory '/usr/obj/usr/ports/lang/mono/work/mono-4.0.1'
Makefile:449: recipe for target 'all' failed
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory '/usr/obj/usr/ports/lang/mono/work/mono-4.0.1'
*** Error code 1
------------------------------------------------------------------------
I can't reproduce it on a 24GB 10.1-RELEASE system. I'm guessing it's a
high-memory/tuning issue.
mono-sgen.core reveals the following backtrace:
#0 0x00000008012eacaa in thr_kill () from /lib/libc.so.7
#1 0x00000008012eac16 in raise () from /lib/libc.so.7
#2 0x00000008012e9409 in abort () from /lib/libc.so.7
#3 0x00000000004b1903 in mono_handle_native_sigsegv (signal=<value optimized
out>, ctx=<value optimized out>,
info=<value optimized out>) at mini-exceptions.c:2386
#4 0x000000000041eeac in mono_sigsegv_signal_handler (_dummy=11,
_info=0x7fffffffd2b0, context=0x7fffffffcf40) at mini.c:6771
#5 0x0000000800f8f997 in pthread_sigmask () from /lib/libthr.so.3
#6 0x0000000800f8f1a8 in pthread_getspecific () from /lib/libthr.so.3
#7 <signal handler called>
#8 0x0000000000607f83 in wapi_init () at handles.c:278
#9 0x00000000005a41d5 in mono_init_internal (filename=0x7fffffffdb82
".//class/lib/monolite/basic.exe",
exe_filename=0x7fffffffdb82 ".//class/lib/monolite/basic.exe",
runtime_version=0x0) at domain.c:504
#10 0x000000000041f846 in mini_init (filename=<value optimized out>,
runtime_version=<value optimized out>) at mini.c:7404
#11 0x0000000000484b4c in mono_main (argc=8, argv=0x7fffffffd628) at
driver.c:1921
#12 0x000000000041600f in _start ()
Turns out this line in mono/io-layer/handles.c immediately before the segfault
is failing, returning -1:
_wapi_global_signal_handle = _wapi_handle_new (WAPI_HANDLE_EVENT, NULL);
Drilling down, I see the array's running out of slots, as defined in
mono/io-layer/handles-private.h:25
#define _WAPI_PRIVATE_MAX_SLOTS (1024 * 16)
Increasing this to 1024 * 17 fixes the build. Patch to drop into files/
attached.
More information about the freebsd-mono
mailing list