cpp_client_telemetry icon indicating copy to clipboard operation
cpp_client_telemetry copied to clipboard

Application consuming 100% cpu in libcurl

Open eduardo-camacho opened this issue 5 years ago • 3 comments

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 avatar May 29 '20 19:05 eduardo-camacho

@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 avatar May 29 '20 19:05 maxgolov

@maxgolov Machine was not using proxy/Fiddler. Issue was found as part of an unrelated investigation.

eduardo-camacho avatar Jun 01 '20 21:06 eduardo-camacho

Appears to be bug in libcurl. Curl_socket_check returns an error. Related bug: https://curl.haxx.se/mail/lib-2019-05/0048.html

maxgolov avatar Jun 02 '20 18:06 maxgolov