digitalmars.D.bugs - [Issue 16856] New: D is borked on FreeBSD current (what will
- via Digitalmars-d-bugs (112/112) Nov 29 2016 https://issues.dlang.org/show_bug.cgi?id=16856
https://issues.dlang.org/show_bug.cgi?id=16856 Issue ID: 16856 Summary: D is borked on FreeBSD current (what will eventually be 12) Product: D Version: D2 Hardware: x86_64 OS: FreeBSD Status: NEW Severity: critical Priority: P1 Component: druntime Assignee: nobody puremagic.com Reporter: issues.dlang jmdavisProg.com I know that this is a problem on TrueOS (which is based on FreeBSD current with some additional patches applied), so I'm pretty sure that this happens on FreeBSD current in general, but I still need to verify that. In any case, on FreeBSD current, many programs result in bus errors when they run. I know that it happens when an exception is thrown. I don't know why else (but enough programs fail, that I don't _think_ that it's just because of exceptions). For instance, running druntime's unit tests for 2.071.2, results in this: ../dmd/src/dmd -conf= -Isrc -Iimport -w -dip25 -m64 -g -debug -ofgenerated/freebsd/debug/64/unittest/test_runner src/test_runner.d -Lgenerated/freebsd/debug/64/unittest/libdruntime-ut.so -debuglib= -defaultlib= generated/freebsd/debug/64/unittest/test_runner object 0x800b2b622 <_D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUNbiPS4core3sys5posix6signal9siginfo_tPvZv+58> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800ea984d <pthread_sigmask+1293> at /lib/libthr.so.3 0x800ea8e1f <pthread_getspecific+3743> at /lib/libthr.so.3 0x7ffffffff003 <???+0> at ??? 0x800bdfe70 <_d_throwdwarf+72> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800b0bd58 <_D6object18__unittestL2628_28FZ5Inner10__postblitMFNfZv+184> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800b0c091 <_D6object18__unittestL2628_28FZ5Outer15__fieldPostblitMFNeZv+33> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800b0c15d <_D6object18__unittestL2628_28FZ5Outer14__aggrPostblitMFNeZv+21> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800b116b5 <_D6object59__T16_postblitRecurseTS6object18__unittestL2628_28FZ5OuterZ16_postblitRecurseFNfKS6object18__unittestL2628_28FZ5OuterZv+21> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800b0b7fa <_D6object18__unittestL2628_28FZv+66> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800b1410b <_D6object9__modtestFZv+139> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x401758 <???+0> at /usr/home/jmdavis/Programming/github/druntime/generated/freebsd/debug/64/unittest/test_runner 0x800b2b574 <runModuleUnitTests+172> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800bdf81e <_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZv+30> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800bdf7ac <_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv+52> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x800bdf718 <_d_run_main+808> at generated/freebsd/debug/64/unittest/libdruntime-ut.so 0x401a6c <_D4core4time48__T7convertVAyaa6_686e73656373VAyaa5_6d73656373Z7convertFNaNbNiNflZl+208> at /usr/home/jmdavis/Programming/github/druntime/generated/freebsd/debug/64/unittest/test_runner 0x40138f <???+0> at /usr/home/jmdavis/Programming/github/druntime/generated/freebsd/debug/64/unittest/test_runner gmake[1]: *** [posix.mak:243: generated/freebsd/debug/64/unittest/object] Bus error gmake[1]: *** Deleting file 'generated/freebsd/debug/64/unittest/object' gmake[1]: Leaving directory '/usr/home/jmdavis/Programming/github/druntime' gmake: *** [posix.mak:200: unittest-debug] Error 2 and running the dmd test suite results in Creating output directory: test_results Building d_do_test tool OS: freebsd 0x478926 <???+0> at /var/tmp//dmd_runqjmU8P 0x80092584d <pthread_sigmask+1293> at /lib/libthr.so.3 0x800924e1f <pthread_getspecific+3743> at /lib/libthr.so.3 0x7ffffffff003 <???+0> at ??? 0x459900 <???+0> at /var/tmp//dmd_runqjmU8P 0x40b32e <???+0> at /var/tmp//dmd_runqjmU8P 0x4523f9 <???+0> at /var/tmp//dmd_runqjmU8P 0x408606 <???+0> at /var/tmp//dmd_runqjmU8P 0x4526a1 <???+0> at /var/tmp//dmd_runqjmU8P 0x408570 <???+0> at /var/tmp//dmd_runqjmU8P 0x454c7a <???+0> at /var/tmp//dmd_runqjmU8P 0x47896d <???+0> at /var/tmp//dmd_runqjmU8P 0x457388 <???+0> at /var/tmp//dmd_runqjmU8P 0x45dfc3 <???+0> at /var/tmp//dmd_runqjmU8P 0x45e052 <???+0> at /var/tmp//dmd_runqjmU8P 0x45df54 <???+0> at /var/tmp//dmd_runqjmU8P 0x457364 <???+0> at /var/tmp//dmd_runqjmU8P 0x478867 <???+0> at /var/tmp//dmd_runqjmU8P 0x45973b <???+0> at /var/tmp//dmd_runqjmU8P 0x4596dd <???+0> at /var/tmp//dmd_runqjmU8P 0x45964e <???+0> at /var/tmp//dmd_runqjmU8P 0x45503a <???+0> at /var/tmp//dmd_runqjmU8P 0x4031cf <???+0> at /var/tmp//dmd_runqjmU8P --- killed by signal 10 gmake: *** [Makefile:194: test_results/d_do_test] Error 1 Some simple programs do run successfully (like hello world), but many do not. I have verified that FreeBSD 11 passes the druntime and Phobos unit tests as well as the dmd test suite, and every version of dmd that I've tried has had this problem. So, I think that it's clear that whatever broke things was a change in FreeBSD current after FreeBSD 11 was forked off of it. What is not clear is whether this is a bug in FreeBSD or a bug in our stuff. Based on the stack traces, I'm _guessing_ that we're doing something wrong with pthreads, but I don't know. Either way, as it stands, D programs don't work currently on FreeBSD current. When I have time, I'm going to try and at least narrow down the commit in FreeBSD which broke things, which will hopefully give better insight into the problem. I have no idea whether this problem is specific to 64-bit or not, since that's all I'm running. I would guess that it's not, but I'm also guessing that this is a druntime bug. More research is required to know for sure. --
Nov 29 2016