#67803 closed defect (fixed)

curl @8.2.0: libcurl.4.dylib : _SCDynamicStoreCopyProxies Symbol not found

Reported by: BjarneDMat Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: Cc: tehcog (tehcog), acjones8 (Alex Jones), mascguy (Christopher Nielsen)
Port: curl

Description (last modified by BjarneDMat)

Hardware:
    Hardware Overview:
      Model Name: Mac mini
      Model Identifier: Macmini2,1
      Processor Name: Intel Core 2 Duo
      Boot ROM Version: MM21.009A.B00
      SMC Version (system): 1.19f2
Software:
    System Software Overview:
      System Version: Mac OS X 10.6.8 (10K549)
      Kernel Version: Darwin 10.8.0

So, I've got a PHP script that uses php82-curl @8.2.8_0. When run w/ curl @8.2.0_0+ssl, I get the following:

dyld: Symbol not found: _SCDynamicStoreCopyProxies
  Referenced from: /opt/local/lib/libcurl.4.dylib 
  Expected in: flat namespace

I've tried force re-installing both curl @8.2.0_0+ssl & php82-curl @8.2.8_0

Downgrading to curl @8.1.2_0+ssl fixes the issue:

#=> port installed | grep curl
  curl @8.1.2_0+ssl (active)
  curl-ca-bundle @8.2.0_0 (active)
  php82-curl @8.2.8_0 (active)

This problem is not seen on a

Hardware:
    Hardware Overview:
      Model Name: MacBook Pro
      Model Identifier: MacBookPro8,3
      Boot ROM Version: 87.0.0.0.0
      SMC Version (system): 1.70f6
Software:
    System Software Overview:
      System Version: macOS 10.15.7 (19H2)
      Kernel Version: Darwin 19.6.0

Change History (12)

comment:1 Changed 10 months ago by jmroot (Joshua Root)

Owner: set to ryandesign
Port: 8.2.0 removed
Status: newassigned
Summary: libcurl.4.dylib : _SCDynamicStoreCopyProxies Symbol not foundcurl @8.2.0: libcurl.4.dylib : _SCDynamicStoreCopyProxies Symbol not found

comment:2 Changed 10 months ago by BjarneDMat

Description: modified (diff)

comment:3 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

Status: assignedaccepted

Thanks for the report. _SCDynamicStoreCopyProxies is part of Apple's SystemConfiguration framework in Mac OS X 10.1 and later. However I see from the buildbot logs that on OS X 10.11 and earlier, curl apparently erroneously decides not to link it in:

checking whether to link macOS CoreFoundation and SystemConfiguration framework... no

On macOS 10.12 and later it does link it in:

checking whether to link macOS CoreFoundation and SystemConfiguration framework... yes

I will have to boot up an older OS X and see what the config.log has to say about why it made that decision.

comment:4 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

This didn't change in 8.2.0. What did change in 8.2.0 is that the code that calls SCDynamicStoreCopyProxies moved from the Curl_resolv function (where you might not've seen the problem if you never called that function) to the global_init function (which I guess is called automatically by curl during its startup process so now you get the error no matter what you do with curl).

comment:5 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

And indeed the problem occurs on the command line too (this is on OS X 10.8):

$ curl --version
dyld: lazy symbol binding failed: Symbol not found: _SCDynamicStoreCopyProxies
  Referenced from: /opt/local/lib/libcurl.4.dylib
  Expected in: flat namespace

dyld: Symbol not found: _SCDynamicStoreCopyProxies
  Referenced from: /opt/local/lib/libcurl.4.dylib
  Expected in: flat namespace

Trace/BPT trap: 5

config.log says of this test:

configure:21697: checking whether to link macOS CoreFoundation and SystemConfiguration framework
configure:21721: /usr/bin/clang -std=gnu11 -c -pipe -Os -mmacosx-version-min=10.8 -arch x86_64 -Qunused-arguments -Wno-pointer-bool-conversion -Werror=partial-availability -I/opt/local/include conftest.c >&5
warning: unknown warning option '-Wno-pointer-bool-conversion'; did you mean '-Wno-literal-conversion'? [-Wunknown-warning-option]
warning: unknown warning option '-Werror=partial-availability'; did you mean '-Werror=availability'? [-Wunknown-warning-option]
conftest.c:34:2: error: Not a macOS
#error Not a macOS
 ^
2 warnings and 1 error generated.
configure:21721: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "curl"
| #define PACKAGE_TARNAME "curl"
| #define PACKAGE_VERSION "-"
| #define PACKAGE_STRING "curl -"
| #define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.se/mail/"
| #define PACKAGE_URL ""
| #define HAVE_STDIO_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define STDC_HEADERS 1
| #define PACKAGE "curl"
| #define VERSION "-"
| #define OS "x86_64-apple-darwin12.6.0"
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h.  */
|
|
| #include <TargetConditionals.h>
|
| int main (void)
| {
|
| #if (TARGET_OS_OSX)
|       return 0;
| #else
| #error Not a macOS
| #endif
|
|  ;
|  return 0;
| }
|
configure:21737: result: no

It's checking for TARGET_OS_OSX which didn't exist until the macOS 10.12 SDK. I filed a bug with the curl developers: https://github.com/curl/curl/issues/11502

comment:6 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

You can work around the problem for now by using the +ares variant (sudo port install curl +ares). The code that calls SCDynamicStoreCopyProxies is only compiled in when c-ares is not used.

comment:7 in reply to:  4 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

Replying to ryandesign:

This didn't change in 8.2.0. What did change in 8.2.0 is [...]

Actually the relevant change is probably this one. Previously, because TARGET_OS_OSX was not defined on 10.11 and earlier, the code to call SCDynamicStoreCopyProxies wasn't compiled in, and the framework wasn't linked in, which was fine. After that change, the code to call the function was compiled in but the configure script code to link in the framework wasn't also adjusted.

comment:8 Changed 10 months ago by tehcog (tehcog)

Cc: tehcog added

comment:9 Changed 10 months ago by acjones8 (Alex Jones)

Cc: acjones8 added

comment:10 Changed 10 months ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:11 Changed 10 months ago by mascguy (Christopher Nielsen)

Ryan, this is also causing failures for librsvg-devel; issue:67817

comment:12 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: acceptedclosed

In 38fa232748522381ac0664faf92623366ab9ad71/macports-ports (master):

curl: Fix crash on OS X 10.11 and earlier

Closes: #67803

Note: See TracTickets for help on using tickets.