curl / Mailing Lists / curl-library / Single Mail
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)

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
-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html
Received on 2024-03-26