[Issue 18055] New: exception handling cause EXC_BAD_ACCESS when linking against shared libraries using vibe

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Dec 10 20:31:39 UTC 2017


https://issues.dlang.org/show_bug.cgi?id=18055

          Issue ID: 18055
           Summary: exception handling cause EXC_BAD_ACCESS when linking
                    against shared libraries using vibe
           Product: D
           Version: D2
          Hardware: x86
                OS: Mac OS X
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: timothee.cour2 at gmail.com

I understand shared libraries are not 100% supported on OSX but they work to
some extent and fullfill a use case; could we make sure this particular case
works?
It's sad that such a fundamental feature (shared libraries) still don't work in
2017.

dmd --version
DMD64 D Compiler v2.077.0

dub build
mv libtest1.so libtest1.dylib # cf another dub bug which creates .so instead of
.dylib
dmd -g -of=app libtest1.dylib main2.d

lldb ./app

(lldb) r
Process 85211 launched: './app' (x86_64)
Shared libraries are not yet supported on OSX.
ok1
Process 85211 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0x90)
    frame #0: 0x00000001002fcfd1 libtest1.so`thread_stackBottom + 21
libtest1.so`thread_stackBottom:
->  0x1002fcfd1 <+21>: movq   0x90(%rcx), %rdx
    0x1002fcfd8 <+28>: movq   (%rdx), %rax
    0x1002fcfdb <+31>: popq   %rbp
    0x1002fcfdc <+32>: retq
Target 0: (app) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0x90)
  * frame #0: 0x00000001002fcfd1 libtest1.so`thread_stackBottom + 21
    frame #1: 0x00000001002fa8e6
libtest1.so`D4core7runtime19defaultTraceHandlerFPvZ16DefaultTraceInfo6__ctorMFZCQCpQCnQCiFQBqZQBr
+ 46
    frame #2: 0x00000001002fa8a0
libtest1.so`D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo
+ 64
    frame #3: 0x000000010001470f app`_d_traceContext + 31
    frame #4: 0x00000001000143ae app`_d_createTrace + 70
    frame #5: 0x0000000100014cf7 app`_d_throwdwarf + 167
    frame #6: 0x00000001000016cf
app`D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamxAaZv at exception.d:420
    frame #7: 0x000000010000164a
app`D3std9exception__T7enforceHTC9ExceptionTiZQyFNaNfiLAxaAyamZi at
exception.d:388
    frame #8: 0x0000000100000ee4 app`D5main211test_throw2FZv at main2.d:6
    frame #9: 0x0000000100000e75 app`_Dmain at main2.d:14
    frame #10: 0x0000000100014a4c
app`D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv + 40
    frame #11: 0x0000000100014974
app`D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv + 32
    frame #12: 0x00000001000149f1
app`D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZv + 45
    frame #13: 0x0000000100014974
app`D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv + 32
    frame #14: 0x00000001000148df app`_d_run_main + 459
    frame #15: 0x0000000100000e9e app`main + 34
    frame #16: 0x00007fff664c8145 libdyld.dylib`start + 1
    frame #17: 0x00007fff664c8145 libdyld.dylib`start + 1


dub.json:
{
         "name": "test1",
         "targetType": "dynamicLibrary",
         "dependencies": {
                 "vibe-d": "==0.7.32",
         },
         "sourcePaths": [
                 "source/"
         ]
 }

source/app.d:
 module app;

 void fun(){
// uncomment to remove bug
         import vibe.vibe;
 }

main2.d:
 void test_throw2(){
         import std.exception;
         import std.stdio;
         writeln("ok1");
         try{
                 enforce(0);
         } catch(Exception t){
                 writeln("thrown");
         }
         writeln("ok2");
 }

 void main(){
         test_throw2;
 }

--


More information about the Digitalmars-d-bugs mailing list