Skip to content

tests: Run global cleanup at end of tests - #3783

Closed
danielgustafsson wants to merge 1 commit into
curl:masterfrom
danielgustafsson:dg-test1905_ssl_memleak
Closed

tests: Run global cleanup at end of tests#3783
danielgustafsson wants to merge 1 commit into
curl:masterfrom
danielgustafsson:dg-test1905_ssl_memleak

Conversation

@danielgustafsson

Copy link
Copy Markdown
Member

Make sure to run curl_global_cleanup() when shutting down the test suite to release any resources allocated in the SSL setup. This is clearly visible when running tests with PolarSSL where the thread lock calloc() memory which isn't released when not running cleanup. Below is an excerpt from the autobuild logs:

  ==12368== 96 bytes in 1 blocks are possibly lost in loss record 1 of 2
  ==12368== at 0x4837B65: calloc (vg_replace_malloc.c:752)
  ==12368== by 0x11A76E: curl_dbg_calloc (memdebug.c:205)
  ==12368== by 0x145CDF: Curl_polarsslthreadlock_thread_setup (polarssl_threadlock.c:54)
  ==12368== by 0x145B37: Curl_polarssl_init (polarssl.c:865)
  ==12368== by 0x14129D: Curl_ssl_init (vtls.c:171)
  ==12368== by 0x118B4C: global_init (easy.c:158)
  ==12368== by 0x118BF5: curl_global_init (easy.c:221)
  ==12368== by 0x118D0B: curl_easy_init (easy.c:299)
  ==12368== by 0x114E96: test (lib1906.c:32)
  ==12368== by 0x115495: main (first.c:174)

Make sure to run curl_global_cleanup() when shutting down the test
suite to release any resources allocated in the SSL setup. This is
clearly visible when running tests with PolarSSL where the thread
lock calloc() memory which isn't released when not running cleanup.
Below is an excerpt from the autobuild logs:

  ==12368== 96 bytes in 1 blocks are possibly lost in loss record 1 of 2
  ==12368== at 0x4837B65: calloc (vg_replace_malloc.c:752)
  ==12368== by 0x11A76E: curl_dbg_calloc (memdebug.c:205)
  ==12368== by 0x145CDF: Curl_polarsslthreadlock_thread_setup (polarssl_threadlock.c:54)
  ==12368== by 0x145B37: Curl_polarssl_init (polarssl.c:865)
  ==12368== by 0x14129D: Curl_ssl_init (vtls.c:171)
  ==12368== by 0x118B4C: global_init (easy.c:158)
  ==12368== by 0x118BF5: curl_global_init (easy.c:221)
  ==12368== by 0x118D0B: curl_easy_init (easy.c:299)
  ==12368== by 0x114E96: test (lib1906.c:32)
  ==12368== by 0x115495: main (first.c:174)

Closes #xxxx
@MarcelRaad

Copy link
Copy Markdown
Member

Hmm, where are the corresponding curl_global_init calls? Only implicitly via curl_easy_init? 😕

@danielgustafsson

Copy link
Copy Markdown
Member Author

Hmm, where are the corresponding curl_global_init calls? Only implicitly via curl_easy_init? 😕

Correct, didn't seem worth the code churn to do more in the tests.

@bagder

bagder commented Apr 15, 2019

Copy link
Copy Markdown
Member

How did you detect these problems now? Anything we should do to make them stand out better for the next tests we add so that we don't just reintroduce this?

@danielgustafsson

Copy link
Copy Markdown
Member Author

How did you detect these problems now? Anything we should do to make them stand out better for the next tests we add so that we don't just reintroduce this?

They are flagged by the autobuilds as failures on the PolarSSL build, see for example https://curl.haxx.se/dev/log.cgi?id=20190415005043-6846#prob3

@lock lock Bot locked as resolved and limited conversation to collaborators Jul 14, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants