Application consuming 100% cpu in libcurl
This is an intermitent issue observed on MacOSx 10.15.4 at different apps
+ 2342 HttpRequestCurl::Send() (in mso20) (HttpClient_Curl.hpp:210) [0x105e40795]
+ 2236 curl_easy_perform (in libcurl.4.dylib) + 369 [0x7fff6893b844]
+ ! 887 curl_multi_perform (in libcurl.4.dylib) + 113 [0x7fff68943764]
+ ! : 558 sigpipe_ignore (in libcurl.4.dylib) + 98 [0x7fff68943877]
+ ! : | 554 __platform_sigaction (in libsystem_platform.dylib) + 103 [0x7fff6aea3f25]
+ ! : | + 554 __sigaction (in libsystem_kernel.dylib) + 10 [0x7fff6adf1a76]
+ ! : | 4 __platform_sigaction (in libsystem_platform.dylib) + 103,8 [0x7fff6aea3f25,0x7fff6aea3ec6]
+ ! : 322 sigpipe_ignore (in libcurl.4.dylib) + 61 [0x7fff68943852]
+ ! : | 310 __platform_sigaction (in libsystem_platform.dylib) + 103 [0x7fff6aea3f25]
+ ! : | + 310 __sigaction (in libsystem_kernel.dylib) + 10,0 [0x7fff6adf1a76,0x7fff6adf1a6c]
+ ! : | 7 __platform_sigaction (in libsystem_platform.dylib) + 103,46,... [0x7fff6aea3f25,0x7fff6aea3eec,...]
+ ! : | 5 sigaction (in libsystem_c.dylib) + 0,4 [0x7fff6ad0bf98,0x7fff6ad0bf9c]
+ ! : 6 sigpipe_ignore (in libcurl.4.dylib) + 64,16,... [0x7fff68943855,0x7fff68943825,...]
+ ! : 1 DYLD-STUB$$__platform_sigaction (in libsystem_c.dylib) + 0 [0x7fff6ad7b086]
+ ! 758 curl_multi_perform (in libcurl.4.dylib) + 133 [0x7fff68943778]
+ ! : 693 multi_runsingle (in libcurl.4.dylib) + 744 [0x7fff68943b66]
+ ! : | 606 Curl_is_connected (in libcurl.4.dylib) + 462 [0x7fff6893ed01]
+ ! : | + 592 verifyconnect (in libcurl.4.dylib) + 45 [0x7fff6893f0e4]
+ ! : | + ! 592 getsockopt (in libsystem_kernel.dylib) + 10,0,... [0x7fff6adf03d6,0x7fff6adf03cc,...]
+ ! : | + 14 verifyconnect (in libcurl.4.dylib) + 45,0,... [0x7fff6893f0e4,0x7fff6893f0b7,...]
+ ! : | 43 Curl_is_connected (in libcurl.4.dylib) + 242 [0x7fff6893ec25]
+ ! : | + 41 Curl_socket_check (in libcurl.4.dylib) + 127,121,... [0x7fff68947e0d,0x7fff68947e07,...]
+ ! : | + 2 Curl_socket_check (in libcurl.4.dylib) + 790 [0x7fff689480a4]
+ ! : | + 2 __error (in libsystem_kernel.dylib) + 0,9 [0x7fff6aded64e,0x7fff6aded657]
+ ! : | 27 Curl_is_connected (in libcurl.4.dylib) + 134 [0x7fff6893ebb9]
+ ! : | + 16 Curl_now (in libcurl.4.dylib) + 30 [0x7fff6891be21]
+ ! : | + ! 16 mach_absolute_time (in libsystem_kernel.dylib) + 28,35,... [0x7fff6aded298,0x7fff6aded29f,...]
+ ! : | + 10 Curl_now (in libcurl.4.dylib) + 51,117,... [0x7fff6891be36,0x7fff6891be78,...]
+ ! : | + 1 DYLD-STUB$$mach_absolute_time (in libcurl.4.dylib) + 0 [0x7fff689725ca]
+ ! : | 15 Curl_is_connected (in libcurl.4.dylib) + 210,27,... [0x7fff6893ec05,0x7fff6893eb4e,...]
+ ! : | 2 Curl_is_connected (in libcurl.4.dylib) + 160 [0x7fff6893ebd3]
+ ! : | 2 Curl_timeleft (in libcurl.4.dylib) + 31,131 [0x7fff6893e706,0x7fff6893e76a]
+ ! : 31 multi_runsingle (in libcurl.4.dylib) + 4610 [0x7fff68944a80]
+ ! : | 16 Curl_pgrsUpdate (in libcurl.4.dylib) + 244,285,... [0x7fff6891d30b,0x7fff6891d334,...]
+ ! : | 14 Curl_pgrsUpdate (in libcurl.4.dylib) + 69 [0x7fff6891d25c]
+ ! : | + 9 Curl_now (in libcurl.4.dylib) + 51,40,... [0x7fff6891be36,0x7fff6891be2b,...]
+ ! : | + 5 Curl_now (in libcurl.4.dylib) + 30 [0x7fff6891be21]
+ ! : | + 5 mach_absolute_time (in libsystem_kernel.dylib) + 35,18,... [0x7fff6aded29f,0x7fff6aded28e,...]
+ ! : | 1 Curl_pgrsUpdate (in libcurl.4.dylib) + 102 [0x7fff6891d27d]
+ ! : | 1 Curl_timediff_us (in libcurl.4.dylib) + 0 [0x7fff6891beeb]
+ ! : 23 multi_runsingle (in libcurl.4.dylib) + 278,171,... [0x7fff68943994,0x7fff68943929,...]
+ ! : 11 multi_runsingle (in libcurl.4.dylib) + 244 [0x7fff68943972]
+ ! : 8 Curl_timeleft (in libcurl.4.dylib) + 0,16,... [0x7fff6893e6e7,0x7fff6893e6f7,...]
+ ! : 3 Curl_timeleft (in libcurl.4.dylib) + 156 [0x7fff6893e783]
+ ! : 3 Curl_timediff (in libcurl.4.dylib) + 0,1,... [0x7fff6891be8f,0x7fff6891be90,...]
+ ! 550 curl_multi_perform (in libcurl.4.dylib) + 158 [0x7fff68943791]
+ ! : 542 __platform_sigaction (in libsystem_platform.dylib) + 103 [0x7fff6aea3f25]
+ ! : | 542 __sigaction (in libsystem_kernel.dylib) + 10,0,... [0x7fff6adf1a76,0x7fff6adf1a6c,...]
+ ! : 6 __platform_sigaction (in libsystem_platform.dylib) + 103,0,... [0x7fff6aea3f25,0x7fff6aea3ebe,...]
+ ! : 2 sigaction (in libsystem_c.dylib) + 0 [0x7fff6ad0bf98]
+ ! 20 curl_multi_perform (in libcurl.4.dylib) + 28 [0x7fff6894370f]
+ ! : 11 Curl_now (in libcurl.4.dylib) + 51,40,... [0x7fff6891be36,0x7fff6891be2b,...]
+ ! : 9 Curl_now (in libcurl.4.dylib) + 30 [0x7fff6891be21]
+ ! : 9 mach_absolute_time (in libsystem_kernel.dylib) + 28,31,... [0x7fff6aded298,0x7fff6aded29b,...]
+ ! 16 curl_multi_perform (in libcurl.4.dylib) + 140,158,... [0x7fff6894377f,0x7fff68943791,...]
+ ! 3 curl_multi_perform (in libcurl.4.dylib) + 272 [0x7fff68943803]
+ ! : 3 update_timer (in libcurl.4.dylib) + 19,175 [0x7fff6894262f,0x7fff689426cb]
+ ! 2 curl_multi_perform (in libcurl.4.dylib) + 209 [0x7fff689437c4]
+ ! 2 Curl_splaygetbest (in libcurl.4.dylib) + 0,8 [0x7fff6894a1a8,0x7fff6894a1b0]
+ 99 curl_easy_perform (in libcurl.4.dylib) + 296 [0x7fff6893b7fb]
+ ! 63 Curl_multi_wait (in libcurl.4.dylib) + 609 [0x7fff6894355d]
+ ! : 39 Curl_poll (in libcurl.4.dylib) + 128,0,... [0x7fff689483d8,0x7fff68948358,...]
+ ! : 19 Curl_poll (in libcurl.4.dylib) + 100 [0x7fff689483bc]
+ ! : | 11 Curl_now (in libcurl.4.dylib) + 51,11,... [0x7fff6891be36,0x7fff6891be0e,...]
+ ! : | 8 Curl_now (in libcurl.4.dylib) + 30 [0x7fff6891be21]
+ ! : | 8 mach_absolute_time (in libsystem_kernel.dylib) + 28,56,... [0x7fff6aded298,0x7fff6aded2b4,...]
+ ! : 4 Curl_poll (in libcurl.4.dylib) + 716 [0x7fff68948624]
+ ! : | 4 __error (in libsystem_kernel.dylib) + 0,9 [0x7fff6aded64e,0x7fff6aded657]
+ ! : 1 DYLD-STUB$$__error (in libcurl.4.dylib) + 0 [0x7fff689723ba]
+ ! 22 Curl_multi_wait (in libcurl.4.dylib) + 0,455,... [0x7fff689432fc,0x7fff689434c3,...]
+ ! 6 Curl_multi_wait (in libcurl.4.dylib) + 263 [0x7fff68943403]
+ ! : 6 multi_timeout (in libcurl.4.dylib) + 0,1,... [0x7fff689435f8,0x7fff689435f9,...]
+ ! 6 Curl_multi_wait (in libcurl.4.dylib) + 395 [0x7fff68943487]
+ ! : 6 multi_getsock (in libcurl.4.dylib) + 0,1,... [0x7fff689431d9,0x7fff689431da,...]
+ ! 2 Curl_multi_wait (in libcurl.4.dylib) + 178 [0x7fff689433ae]
+ ! 2 multi_getsock (in libcurl.4.dylib) + 33,138 [0x7fff689431fa,0x7fff68943263]
+ 7 curl_easy_perform (in libcurl.4.dylib) + 369,269,... [0x7fff6893b844,0x7fff6893b7e0,...]
@eduardo-camacho - do you have a repro? This stack is insufficient to tell anything.
Does this machine use a proxy or Fiddler - if so, do you guys setup the proxy as shown in this example here: https://github.com/microsoft/cpp_client_telemetry/tree/master/examples/cpp/MacProxy
libcurl does not auto-capture the proxy settings for a given URL on Mac. This plumbing code to fetch the proxy for URL has to happen in app code before SDK initialization.
@maxgolov Machine was not using proxy/Fiddler. Issue was found as part of an unrelated investigation.
Appears to be bug in libcurl. Curl_socket_check returns an error. Related bug: https://curl.haxx.se/mail/lib-2019-05/0048.html