Skip to content

Mac - linking error (dyld: Symbol not found: __cg_jpeg_resync_to_restart) in beta but not stable #34869

Closed
@compressed

Description

@compressed

This came up in sgrif/pq-sys#1. It seems when trying to run/test anything using beta or later this crate fails to run (not build) with the below error.

Note: I don't have DYLD_LIBRARY_PATH set as an env var anywhere. It seems to be picking up the wrong libJPEG.dylib in beta (/usr/local/lib) instead of in the OSX library location (/System/Library/Frameworks/ImageIO.framework/Resources/...). In part, I believe this to be due do the fact that the pg-sql crate is adding native=/usr/local/lib via -L because that's where the postgresql libraries from homebrew end up being installed. Curiously though, this linking problem does not occur on stable, leading me to believe it is resolving to the proper libJPEG.dylib instead of the one in /usr/local/lib.

Running OSX 10.11.5.

Also, not sure if related or not, but I tried the workaround specified in #34754, codegen-units=1, but it did not eliminate the error.

Beta (or nightly):

~/D/pq-sys git:master ❯❯❯ rustup override set beta
info: using existing install for 'beta-x86_64-apple-darwin'
info: override toolchain for '/Users/chris/Documents/pq-sys' set to 'beta-x86_64-apple-darwin'

  beta-x86_64-apple-darwin unchanged - rustc 1.11.0-beta.1 (8dc253bcf 2016-07-05)

~/D/pq-sys git:master ❯❯❯ cargo test --verbose
   Compiling pq-sys v0.2.1 (file:///Users/chris/Documents/pq-sys)
   Compiling libc v0.2.14
     Running `rustc build.rs --crate-name build_script_build --crate-type bin -g --out-dir /Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps`
     Running `rustc /Users/chris/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.14/src/lib.rs --crate-name libc --crate-type lib -g --cfg feature=\"use_std\" --cfg feature=\"default\" -C metadata=1f3392fe1afd1313 -C extra-filename=-1f3392fe1afd1313 --out-dir /Users/chris/Documents/pq-sys/target/debug/deps --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --cap-lints allow`
     Running `/Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b/build-script-build`
     Running `rustc src/lib.rs --crate-name pq_sys -g --test -C metadata=5b5cdff68186daa5 -C extra-filename=-5b5cdff68186daa5 --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
     Running `rustc src/lib.rs --crate-name pq_sys --crate-type lib -g --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
     Running `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5`
dyld: Symbol not found: __cg_jpeg_resync_to_restart
  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /usr/local/lib/libJPEG.dylib
 in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
error: Process didn't exit successfully: `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5` (signal: 5, SIGTRAP: trace/breakpoint trap)

Caused by:
  Process didn't exit successfully: `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5` (signal: 5, SIGTRAP: trace/breakpoint trap)
~/D/pq-sys git:master ❯❯❯

Stable:

~/D/pq-sys git:master ❯❯❯ rustup override set stable
info: using existing install for 'stable-x86_64-apple-darwin'
info: override toolchain for '/Users/chris/Documents/pq-sys' set to 'stable-x86_64-apple-darwin'

  stable-x86_64-apple-darwin unchanged - rustc 1.10.0 (cfcb716cf 2016-07-03)

~/D/pq-sys git:master ❯❯❯ cargo test --verbose
       Fresh libc v0.2.14
   Compiling pq-sys v0.2.1 (file:///Users/chris/Documents/pq-sys)
     Running `rustc build.rs --crate-name build_script_build --crate-type bin -g --out-dir /Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps`
     Running `/Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b/build-script-build`
     Running `rustc src/lib.rs --crate-name pq_sys --crate-type lib -g --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
     Running `rustc src/lib.rs --crate-name pq_sys --crate-type lib -g --test -C metadata=5b5cdff68186daa5 -C extra-filename=-5b5cdff68186daa5 --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
     Running `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5`

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured

   Doc-tests pq_sys
     Running `rustdoc --test /Users/chris/Documents/pq-sys/src/lib.rs --crate-name pq_sys -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps -L dependency=/Users/chris/Documents/pq-sys/target/debug -L native=/usr/local/lib --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib --extern pq_sys=/Users/chris/Documents/pq-sys/target/debug/libpq_sys.rlib`

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured

I'm not sure of a smaller set to replicate. In order to get into this situation on a mac, you need to have done the following:

  1. brew install postgres
  2. brew install libjpeg. This will add /usr/local/lib/libjpeg.dylib which beta ends up linking to.

Also related otool output:

~/D/pq-sys git:master ❯❯❯ otool -L /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO:
    /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
    /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 600.0.0)
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0)
    /System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1259.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.10.0)
    /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions