[GHC] #9277: GHCi panic: Loading temp shared object failed: Symbol not found

#9277: GHCi panic: Loading temp shared object failed: Symbol not found
----------------------------------+---------------------------------
Reporter: mietek | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: GHCi | Version: 7.8.2
Keywords: | Operating System: MacOS X
Architecture: x86_64 (amd64) | Type of failure: None/Unknown
Difficulty: Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #9034, #8935 |
----------------------------------+---------------------------------
When given a Objective-C object file referencing a symbol available in a
system framework, GHCi panics saying it can't find the symbol the object
file relies on.
{{{
$ cat >foo.m <

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------+------------------------------------------ Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, dynamic linking Operating System: MacOS X | Architecture: x86_64 (amd64) Type of failure: GHCi crash | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #9034, #8935 -------------------------------+------------------------------------------ Changes (by mietek): * keywords: => panic, dynamic linking * failure: None/Unknown => GHCi crash -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------+------------------------------------------ Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, dynamic linking Operating System: MacOS X | Architecture: x86_64 (amd64) Type of failure: GHCi crash | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #9034, #9074, #8935 -------------------------------+------------------------------------------ Changes (by mietek): * related: #9034, #8935 => #9034, #9074, #8935 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------+------------------------------------------ Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, dynamic linking Operating System: MacOS X | Architecture: x86_64 (amd64) Type of failure: GHCi crash | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #9034, #9074, #8935 -------------------------------+------------------------------------------ Comment (by mietek): Works as expected in GHC 7.6.3: {{{ $ ghci foo.o GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading object (static) foo.o ... done final link ... ghc: lookupSymbol failed in relocateSection (relocate external) foo.o: unknown symbol `_OBJC_CLASS_$_NSThread' linking extra libraries/objects failed }}} {{{ $ ghci -framework Foundation foo.o GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading object (static) foo.o ... done Loading object (framework) Foundation ... done final link ... done
Leaving GHCi. }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------+------------------------------------------ Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, dynamic linking Operating System: MacOS X | Architecture: x86_64 (amd64) Type of failure: GHCi crash | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #9034, #9074, #8935 -------------------------------+------------------------------------------ Description changed by mietek: Old description:
When given a Objective-C object file referencing a symbol available in a system framework, GHCi panics saying it can't find the symbol the object file relies on.
{{{ $ cat >foo.m <
BOOL is_main_thread() { return [NSThread isMainThread]; } EOF }}} {{{ $ clang -c -o foo.o foo.m }}} {{{ $ ghci -v -framework Foundation foo.o GHCi, version 7.8.2: http://www.haskell.org/ghc/ :? for help Glasgow Haskell Compiler, Version 7.8.2, stage 2 booted by GHC version 7.6.3 Using binary package database: /opt/ghc-7.8.2/lib/ghc-7.8.2/package.conf.d/package.cache wired-in package ghc-prim mapped to ghc- prim-0.3.1.0-948744e1f99cc8bcc7c7d3ba60c7c2d8 wired-in package integer-gmp mapped to integer- gmp-0.5.1.0-dc47f6b546fc171f67a7f7d311684a99 wired-in package base mapped to base-4.7.0.0-a333addb6892f3cc2e6baa5ec782bd04 wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template- haskell-2.9.0.0-ed6ecfb467e6936688bb20f968f702e1 wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. *** gcc: /usr/bin/gcc -m64 -fno-stack-protector -DTABLES_NEXT_TO_CODE -L/opt/ghc-7.8.2/lib/ghc-7.8.2/base-4.7.0.0 --print-file-name libiconv.dylib Loading package base ... linking ... done. Loading object (static) foo.o ... Created temporary directory: /var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0 *** Linker: /usr/bin/gcc -m64 -fno-stack-protector -DTABLES_NEXT_TO_CODE -m64 -dynamiclib -o /var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0/ghc36377_1.dylib foo.o -undefined dynamic_lookup -single_module -install_name '@rpath/ghc36377_1.dylib' -L/opt/ghc-7.8.2/lib/ghc-7.8.2/base-4.7.0.0 -Wl,-rpath -Wl,/opt/ghc-7.8.2/lib/ghc-7.8.2/base-4.7.0.0 -L/opt/ghc-7.8.2/lib/ghc-7.8.2/integer-gmp-0.5.1.0 -Wl,-rpath -Wl,/opt/ghc-7.8.2/lib/ghc-7.8.2/integer-gmp-0.5.1.0 -L/opt/ghc-7.8.2/lib/ghc-7.8.2/ghc-prim-0.3.1.0 -Wl,-rpath -Wl,/opt/ghc-7.8.2/lib/ghc-7.8.2/ghc-prim-0.3.1.0 -L/opt/ghc-7.8.2/lib/ghc-7.8.2/rts-1.0 -Wl,-rpath -Wl,/opt/ghc-7.8.2/lib/ghc-7.8.2/rts-1.0 -lHSbase-4.7.0.0-ghc7.8.2 -lHSinteger-gmp-0.5.1.0-ghc7.8.2 -lHSghc-prim-0.3.1.0-ghc7.8.2 -liconv *** Deleting temp files: Deleting: /var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0/ghc36377_1.dylib *** Deleting temp dirs: Deleting: /var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0 ghc: panic! (the 'impossible' happened) (GHC version 7.8.2 for x86_64-apple-darwin): Loading temp shared object failed: dlopen(/var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0/ghc36377_1.dylib, 9): Symbol not found: _OBJC_CLASS_$_NSThread Referenced from: /var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0/ghc36377_1.dylib Expected in: flat namespace in /var/folders/26/0tzj1txn0vb_0061l4z4rsmr0000gn/T/ghc36377_0/ghc36377_1.dylib
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug }}}
Note omitting `-framework Foundation` makes no difference to the output.
New description:
When given a Objective-C object file referencing a symbol available in a
system framework, interactive GHCi 7.8.2 panics saying it can't find the
symbol the object file relies on.
Start with an Objective-C source file, defining a function to be used via
the FFI:
{{{
$ cat >foo.m <

#9277: GHCi panic: Loading temp shared object failed: Symbol not found ----------------------------+---------------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, dynamic linking Operating System: MacOS X | Architecture: x86_64 (amd64) Type of failure: GHCi | Difficulty: Unknown crash | Blocked By: Test Case: | Related Tickets: #8935, #9034, #9074, #9278 Blocking: | ----------------------------+---------------------------------------------- Changes (by mietek): * related: #9034, #9074, #8935 => #8935, #9034, #9074, #9278 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, dynamic Operating System: MacOS X | linking Type of failure: GHCi crash | Architecture: x86_64 (amd64) Test Case: | Difficulty: Unknown Blocking: | Blocked By: Differential Revisions: | Related Tickets: #8935, #9034, | #9074, #9278 -------------------------------------+------------------------------------- Changes (by tulcod): * cc: tulcod (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, Operating System: MacOS X | dynamic linking Type of failure: GHCi crash | Architecture: x86_64 Blocked By: | (amd64) Related Tickets: #8935, #9034, | Test Case: #9074, #9278 | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Changes (by George): * cc: george (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, Operating System: MacOS X | dynamic linking Type of failure: GHCi crash | Architecture: x86_64 Blocked By: | (amd64) Related Tickets: #8935, #9034, | Test Case: #9074, #9278 | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by George): I am seeing this on 7.10.1 RC1 when calling main: ghc: panic! (the 'impossible' happened) (GHC version 7.10.0.20141222 for x86_64-apple-darwin): Loading temp shared object failed: dlopen(/var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc40460_0/ghc40460_6.dylib, 5): Symbol not found: _dataozu00S6JfeF9UMKB9yah5AkcN_DataziListziOrdered_minus_closure Referenced from: /var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc40460_0/ghc40460_6.dylib Expected in: flat namespace in /var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc40460_0/ghc40460_6.dylib -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.8.2 Resolution: | Keywords: panic, | dynamic linking Operating System: MacOS X | Architecture: x86_64 | (amd64) Type of failure: GHCi crash | Test Case: Blocked By: | Blocking: Related Tickets: #8935, #9034, | Differential Revisions: #9074, #9278 | -------------------------------------+------------------------------------- Comment (by konn): I have a similar phenomenon with GHC 7.10.2 (installed with Haskell Platform) on OS X Yosemite 10.10.5. The same error also occurs when launching GHCi with `-package foo` where foo uses Obj-C code through FFI. Template Haskell uses GHCi internally, so this means that we can't use Template Haskell with Objective-C FFI. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Runtime System | Version: 7.8.2 (Linker) | Keywords: panic, Resolution: | dynamic linking Operating System: MacOS X | Architecture: x86_64 | (amd64) Type of failure: GHCi crash | Test Case: Blocked By: | Blocking: Related Tickets: #8935, #9034, | Differential Revisions: #9074, #9278 | -------------------------------------+------------------------------------- Changes (by ezyang): * component: GHCi => Runtime System (Linker) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Runtime System | Version: 7.8.2 (Linker) | Keywords: panic, Resolution: | dynamic linking Operating System: MacOS X | Architecture: x86_64 | (amd64) Type of failure: GHCi crash | Test Case: Blocked By: | Blocking: Related Tickets: #8935, #9034, | Differential Rev(s): #9074, #9278 | Wiki Page: | -------------------------------------+------------------------------------- Changes (by trommler): * cc: trommler (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9277: GHCi panic: Loading temp shared object failed: Symbol not found -------------------------------------+------------------------------------- Reporter: mietek | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Runtime System | Version: 7.8.2 (Linker) | Keywords: panic, Resolution: | dynamic linking Operating System: MacOS X | Architecture: x86_64 | (amd64) Type of failure: GHCi crash | Test Case: Blocked By: | Blocking: Related Tickets: #8935, #9034, | Differential Rev(s): #9074, #9278 | Wiki Page: | -------------------------------------+------------------------------------- Comment (by mietek): My test case repository is now named https://github.com/mietek/ghc- issue-9277. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9277#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC