Buy commercial curl support from
WolfSSL. We help you work out your issues, debug your libcurl
applications, use the API, port to new platforms, add new features and more.
With a team lead by the curl founder himself.
Re: SIGSEGV in curl-8.6.0/lib/http2.c:288 (curl_multi_perform->extract_if_dead->http2_data_done)
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Jeffrey Walton via curl-library <curl-library_at_lists.haxx.se>
Date: Mon, 25 Mar 2024 22:33:13 -0400
On Mon, Mar 25, 2024 at 10:26 PM Aleksander Mazur via curl-library
<curl-library_at_lists.haxx.se> wrote:
>
> Dnia 2024-03-21, o godz. 14:08:36
> Aleksander Mazur via curl-library <curl-library_at_lists.haxx.se> napisał(a):
>
> > The app keeps re-using the same 3 easy handles and one multi handle, created
> > once at the beginning. Two of them may talk to the same server (one is
> > switched between different servers).
>
> I didn't mention that the app uses yet another easy handle for sending e-mails
> (smtps://...).
> Valgrind found following error:
>
> ==101562== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
> ==101562==
> ==101562== 2 errors in context 1 of 1:
> ==101562== Invalid read of size 8
> ==101562== at 0x4983659: http2_data_done (http2.c:278)
> ==101562== by 0x49881E8: cf_h2_cntrl (http2.c:2513)
> ==101562== by 0x4963D13: Curl_conn_cf_cntrl (cfilters.c:501)
> ==101562== by 0x4963F38: cf_cntrl_all (cfilters.c:551)
> ==101562== by 0x4963FCF: Curl_conn_ev_data_detach (cfilters.c:568)
> ==101562== by 0x4993D85: Curl_detach_connection (multi.c:973)
> ==101562== by 0x49B2DC3: extract_if_dead (url.c:828)
> ==101562== by 0x49B2E1E: call_extract_if_dead (url.c:854)
> ==101562== by 0x496572C: Curl_conncache_foreach (conncache.c:332)
> ==101562== by 0x49B3009: prune_dead_connections (url.c:883)
> ==101562== by 0x49B772C: create_conn (url.c:3635)
> ==101562== by 0x49B7D0D: Curl_connect (url.c:3873)
You have to build your application and cURL with -O0 or -O1. Valgrind
becomes inaccurate at -O2 and above, and sometimes incorrectly reports
uninitialized memory. Also see
<https://valgrind.org/docs/manual/quick-start.html>.
> ==101562== Address 0x84f9f88 is 8 bytes after a block of size 64 alloc'd
> ==101562== at 0x4849E60: calloc (vg_replace_malloc.c:1595)
> ==101562== by 0x498F348: curl_dbg_calloc (memdebug.c:175)
> ==101562== by 0x49A98A9: smtp_init (smtp.c:1318)
> ==101562== by 0x49AA0AE: smtp_setup_connection (smtp.c:1660)
> ==101562== by 0x49B4DA2: setup_connection_internals (url.c:2042)
> ==101562== by 0x49B7682: create_conn (url.c:3580)
> ==101562== by 0x49B7D0D: Curl_connect (url.c:3873)
> ==101562== by 0x4995B9E: multi_runsingle (multi.c:2002)
> ==101562== by 0x49975B7: curl_multi_perform (multi.c:2780)
> ==101562== by 0x41A599: main (main.c:221)
This may be valid.
> (using vanilla curl 8.6.0)
>
> So it looks like an easy handle set up by smtp handler is then passed via
> cfilters to http2 code (?)
Jeff
Date: Mon, 25 Mar 2024 22:33:13 -0400
On Mon, Mar 25, 2024 at 10:26 PM Aleksander Mazur via curl-library
<curl-library_at_lists.haxx.se> wrote:
>
> Dnia 2024-03-21, o godz. 14:08:36
> Aleksander Mazur via curl-library <curl-library_at_lists.haxx.se> napisał(a):
>
> > The app keeps re-using the same 3 easy handles and one multi handle, created
> > once at the beginning. Two of them may talk to the same server (one is
> > switched between different servers).
>
> I didn't mention that the app uses yet another easy handle for sending e-mails
> (smtps://...).
> Valgrind found following error:
>
> ==101562== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
> ==101562==
> ==101562== 2 errors in context 1 of 1:
> ==101562== Invalid read of size 8
> ==101562== at 0x4983659: http2_data_done (http2.c:278)
> ==101562== by 0x49881E8: cf_h2_cntrl (http2.c:2513)
> ==101562== by 0x4963D13: Curl_conn_cf_cntrl (cfilters.c:501)
> ==101562== by 0x4963F38: cf_cntrl_all (cfilters.c:551)
> ==101562== by 0x4963FCF: Curl_conn_ev_data_detach (cfilters.c:568)
> ==101562== by 0x4993D85: Curl_detach_connection (multi.c:973)
> ==101562== by 0x49B2DC3: extract_if_dead (url.c:828)
> ==101562== by 0x49B2E1E: call_extract_if_dead (url.c:854)
> ==101562== by 0x496572C: Curl_conncache_foreach (conncache.c:332)
> ==101562== by 0x49B3009: prune_dead_connections (url.c:883)
> ==101562== by 0x49B772C: create_conn (url.c:3635)
> ==101562== by 0x49B7D0D: Curl_connect (url.c:3873)
You have to build your application and cURL with -O0 or -O1. Valgrind
becomes inaccurate at -O2 and above, and sometimes incorrectly reports
uninitialized memory. Also see
<https://valgrind.org/docs/manual/quick-start.html>.
> ==101562== Address 0x84f9f88 is 8 bytes after a block of size 64 alloc'd
> ==101562== at 0x4849E60: calloc (vg_replace_malloc.c:1595)
> ==101562== by 0x498F348: curl_dbg_calloc (memdebug.c:175)
> ==101562== by 0x49A98A9: smtp_init (smtp.c:1318)
> ==101562== by 0x49AA0AE: smtp_setup_connection (smtp.c:1660)
> ==101562== by 0x49B4DA2: setup_connection_internals (url.c:2042)
> ==101562== by 0x49B7682: create_conn (url.c:3580)
> ==101562== by 0x49B7D0D: Curl_connect (url.c:3873)
> ==101562== by 0x4995B9E: multi_runsingle (multi.c:2002)
> ==101562== by 0x49975B7: curl_multi_perform (multi.c:2780)
> ==101562== by 0x41A599: main (main.c:221)
This may be valid.
> (using vanilla curl 8.6.0)
>
> So it looks like an easy handle set up by smtp handler is then passed via
> cfilters to http2 code (?)
Jeff
-- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.htmlReceived on 2024-03-26