Skip to content

Leak & Fail to compile Perl with ithreads and clang #18108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
atoomic opened this issue Sep 1, 2020 · 13 comments
Closed

Leak & Fail to compile Perl with ithreads and clang #18108

atoomic opened this issue Sep 1, 2020 · 13 comments

Comments

@atoomic
Copy link
Member

atoomic commented Sep 1, 2020

Notice this error with the following tags:

  • v5.26.0 [ failed to compile but for a different reason]
pp.c:3748:49: error: no member named 'current_saltbits' in 'struct crypt_data'
            PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0;
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
  • v5.28.1
  • v5.30.0
  • v5.32.0
  • v5.33.1

Configure output used

> git clean -dxf; ./Configure -Dusedevel -des -Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -Duseithreads

Extract from make

=================================================================
==333429==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4072 byte(s) in 1 object(s) allocated from:
    #0 0x4d7d77  (/home/atoomic/workspace/perl/miniperl+0x4d7d77)
    #1 0x716dde  (/home/atoomic/workspace/perl/miniperl+0x716dde)
    #2 0x7ff955  (/home/atoomic/workspace/perl/miniperl+0x7ff955)
    #3 0x579678  (/home/atoomic/workspace/perl/miniperl+0x579678)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 3376 byte(s) in 1 object(s) allocated from:
    #0 0x4d7f38  (/home/atoomic/workspace/perl/miniperl+0x4d7f38)
    #1 0x716c2a  (/home/atoomic/workspace/perl/miniperl+0x716c2a)
    #2 0x852859  (/home/atoomic/workspace/perl/miniperl+0x852859)
    #3 0x5baf41  (/home/atoomic/workspace/perl/miniperl+0x5baf41)
    #4 0x63a87c  (/home/atoomic/workspace/perl/miniperl+0x63a87c)
    #5 0x87fa78  (/home/atoomic/workspace/perl/miniperl+0x87fa78)
    #6 0x879f73  (/home/atoomic/workspace/perl/miniperl+0x879f73)
    #7 0x77c0ec  (/home/atoomic/workspace/perl/miniperl+0x77c0ec)
    #8 0x58b3c4  (/home/atoomic/workspace/perl/miniperl+0x58b3c4)
    #9 0x581d93  (/home/atoomic/workspace/perl/miniperl+0x581d93)
    #10 0x54f817  (/home/atoomic/workspace/perl/miniperl+0x54f817)
    #11 0x534b92  (/home/atoomic/workspace/perl/miniperl+0x534b92)
    #12 0x5383b6  (/home/atoomic/workspace/perl/miniperl+0x5383b6)
    #13 0x63c31d  (/home/atoomic/workspace/perl/miniperl+0x63c31d)
    #14 0x5866f1  (/home/atoomic/workspace/perl/miniperl+0x5866f1)
    #15 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #16 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 1088 byte(s) in 1 object(s) allocated from:
    #0 0x4d7d77  (/home/atoomic/workspace/perl/miniperl+0x4d7d77)
    #1 0x716dde  (/home/atoomic/workspace/perl/miniperl+0x716dde)
    #2 0x5a1469  (/home/atoomic/workspace/perl/miniperl+0x5a1469)
    #3 0x5c477d  (/home/atoomic/workspace/perl/miniperl+0x5c477d)
    #4 0x63a87c  (/home/atoomic/workspace/perl/miniperl+0x63a87c)
    #5 0x87fa78  (/home/atoomic/workspace/perl/miniperl+0x87fa78)
    #6 0x879f73  (/home/atoomic/workspace/perl/miniperl+0x879f73)
    #7 0x77c0ec  (/home/atoomic/workspace/perl/miniperl+0x77c0ec)
    #8 0x58b3c4  (/home/atoomic/workspace/perl/miniperl+0x58b3c4)
    #9 0x581d93  (/home/atoomic/workspace/perl/miniperl+0x581d93)
    #10 0x54f817  (/home/atoomic/workspace/perl/miniperl+0x54f817)
    #11 0x534b92  (/home/atoomic/workspace/perl/miniperl+0x534b92)
    #12 0x5383b6  (/home/atoomic/workspace/perl/miniperl+0x5383b6)
    #13 0x63c31d  (/home/atoomic/workspace/perl/miniperl+0x63c31d)
    #14 0x5866f1  (/home/atoomic/workspace/perl/miniperl+0x5866f1)
    #15 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #16 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x5798c2  (/home/atoomic/workspace/perl/miniperl+0x5798c2)
    #3 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #4 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 656 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743b03  (/home/atoomic/workspace/perl/miniperl+0x743b03)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d7d77  (/home/atoomic/workspace/perl/miniperl+0x4d7d77)
    #1 0x716dde  (/home/atoomic/workspace/perl/miniperl+0x716dde)
    #2 0x579e1c  (/home/atoomic/workspace/perl/miniperl+0x579e1c)
    #3 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #4 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 272 byte(s) in 1 object(s) allocated from:
    #0 0x4d7d77  (/home/atoomic/workspace/perl/miniperl+0x4d7d77)
    #1 0x716dde  (/home/atoomic/workspace/perl/miniperl+0x716dde)
    #2 0x5a1491  (/home/atoomic/workspace/perl/miniperl+0x5a1491)
    #3 0x5c477d  (/home/atoomic/workspace/perl/miniperl+0x5c477d)
    #4 0x63a87c  (/home/atoomic/workspace/perl/miniperl+0x63a87c)
    #5 0x87fa78  (/home/atoomic/workspace/perl/miniperl+0x87fa78)
    #6 0x879f73  (/home/atoomic/workspace/perl/miniperl+0x879f73)
    #7 0x77c0ec  (/home/atoomic/workspace/perl/miniperl+0x77c0ec)
    #8 0x58b3c4  (/home/atoomic/workspace/perl/miniperl+0x58b3c4)
    #9 0x581d93  (/home/atoomic/workspace/perl/miniperl+0x581d93)
    #10 0x54f817  (/home/atoomic/workspace/perl/miniperl+0x54f817)
    #11 0x534b92  (/home/atoomic/workspace/perl/miniperl+0x534b92)
    #12 0x5383b6  (/home/atoomic/workspace/perl/miniperl+0x5383b6)
    #13 0x63c31d  (/home/atoomic/workspace/perl/miniperl+0x63c31d)
    #14 0x5866f1  (/home/atoomic/workspace/perl/miniperl+0x5866f1)
    #15 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #16 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 244 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7f7093f384c9  (/lib64/libc.so.6+0x344c9)
    #2 0x96dd50  (/home/atoomic/workspace/perl/miniperl+0x96dd50)
    #3 0x96f51e  (/home/atoomic/workspace/perl/miniperl+0x96f51e)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x57991a  (/home/atoomic/workspace/perl/miniperl+0x57991a)
    #3 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #4 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x57997c  (/home/atoomic/workspace/perl/miniperl+0x57997c)
    #3 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #4 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ab16  (/home/atoomic/workspace/perl/miniperl+0x96ab16)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ac65  (/home/atoomic/workspace/perl/miniperl+0x96ac65)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96aad3  (/home/atoomic/workspace/perl/miniperl+0x96aad3)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ab59  (/home/atoomic/workspace/perl/miniperl+0x96ab59)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96aca8  (/home/atoomic/workspace/perl/miniperl+0x96aca8)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ac22  (/home/atoomic/workspace/perl/miniperl+0x96ac22)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96d9a4  (/home/atoomic/workspace/perl/miniperl+0x96d9a4)
    #3 0x96f51e  (/home/atoomic/workspace/perl/miniperl+0x96f51e)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ad2e  (/home/atoomic/workspace/perl/miniperl+0x96ad2e)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ab9c  (/home/atoomic/workspace/perl/miniperl+0x96ab9c)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96d304  (/home/atoomic/workspace/perl/miniperl+0x96d304)
    #3 0x96f4fc  (/home/atoomic/workspace/perl/miniperl+0x96f4fc)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96aceb  (/home/atoomic/workspace/perl/miniperl+0x96aceb)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96abdf  (/home/atoomic/workspace/perl/miniperl+0x96abdf)
    #3 0x96e7ba  (/home/atoomic/workspace/perl/miniperl+0x96e7ba)
    #4 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 10 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x7a65b4  (/home/atoomic/workspace/perl/miniperl+0x7a65b4)
    #3 0x7bca55  (/home/atoomic/workspace/perl/miniperl+0x7bca55)
    #4 0x579d79  (/home/atoomic/workspace/perl/miniperl+0x579d79)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 10 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x7a65b4  (/home/atoomic/workspace/perl/miniperl+0x7a65b4)
    #3 0x7bca55  (/home/atoomic/workspace/perl/miniperl+0x7bca55)
    #4 0x579d66  (/home/atoomic/workspace/perl/miniperl+0x579d66)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 10 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x7a65b4  (/home/atoomic/workspace/perl/miniperl+0x7a65b4)
    #3 0x7bca55  (/home/atoomic/workspace/perl/miniperl+0x7bca55)
    #4 0x579d53  (/home/atoomic/workspace/perl/miniperl+0x579d53)
    #5 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #6 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 6 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x96e138  (/home/atoomic/workspace/perl/miniperl+0x96e138)
    #3 0x971558  (/home/atoomic/workspace/perl/miniperl+0x971558)
    #4 0x96bf32  (/home/atoomic/workspace/perl/miniperl+0x96bf32)
    #5 0x96f4d5  (/home/atoomic/workspace/perl/miniperl+0x96f4d5)
    #6 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #7 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #8 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 6 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7187e4  (/home/atoomic/workspace/perl/miniperl+0x7187e4)
    #2 0x57a6d4  (/home/atoomic/workspace/perl/miniperl+0x57a6d4)
    #3 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #4 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 3 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7187e4  (/home/atoomic/workspace/perl/miniperl+0x7187e4)
    #2 0x5850fe  (/home/atoomic/workspace/perl/miniperl+0x5850fe)
    #3 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #4 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Direct leak of 2 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x71871d  (/home/atoomic/workspace/perl/miniperl+0x71871d)
    #2 0x96ae0a  (/home/atoomic/workspace/perl/miniperl+0x96ae0a)
    #3 0x96dd8f  (/home/atoomic/workspace/perl/miniperl+0x96dd8f)
    #4 0x96f51e  (/home/atoomic/workspace/perl/miniperl+0x96f51e)
    #5 0x57a79a  (/home/atoomic/workspace/perl/miniperl+0x57a79a)
    #6 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #7 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 8008 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x84aff2  (/home/atoomic/workspace/perl/miniperl+0x84aff2)
    #3 0x579772  (/home/atoomic/workspace/perl/miniperl+0x579772)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743edb  (/home/atoomic/workspace/perl/miniperl+0x743edb)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743fce  (/home/atoomic/workspace/perl/miniperl+0x743fce)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743f7d  (/home/atoomic/workspace/perl/miniperl+0x743f7d)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743f2c  (/home/atoomic/workspace/perl/miniperl+0x743f2c)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743e8a  (/home/atoomic/workspace/perl/miniperl+0x743e8a)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743de9  (/home/atoomic/workspace/perl/miniperl+0x743de9)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743d99  (/home/atoomic/workspace/perl/miniperl+0x743d99)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 3296 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x7ff9d7  (/home/atoomic/workspace/perl/miniperl+0x7ff9d7)
    #3 0x579678  (/home/atoomic/workspace/perl/miniperl+0x579678)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 3264 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x7a355b  (/home/atoomic/workspace/perl/miniperl+0x7a355b)
    #3 0x7b62b1  (/home/atoomic/workspace/perl/miniperl+0x7b62b1)
    #4 0x5a2a98  (/home/atoomic/workspace/perl/miniperl+0x5a2a98)
    #5 0x5a0d9a  (/home/atoomic/workspace/perl/miniperl+0x5a0d9a)
    #6 0x586003  (/home/atoomic/workspace/perl/miniperl+0x586003)
    #7 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #8 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 1872 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x84aff2  (/home/atoomic/workspace/perl/miniperl+0x84aff2)
    #3 0x54f4ca  (/home/atoomic/workspace/perl/miniperl+0x54f4ca)
    #4 0x534b92  (/home/atoomic/workspace/perl/miniperl+0x534b92)
    #5 0x6406db  (/home/atoomic/workspace/perl/miniperl+0x6406db)
    #6 0x5866f1  (/home/atoomic/workspace/perl/miniperl+0x5866f1)
    #7 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #8 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 256 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x744070  (/home/atoomic/workspace/perl/miniperl+0x744070)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 256 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x74401f  (/home/atoomic/workspace/perl/miniperl+0x74401f)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 256 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743e39  (/home/atoomic/workspace/perl/miniperl+0x743e39)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 56 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x84ae71  (/home/atoomic/workspace/perl/miniperl+0x84ae71)
    #3 0x54f4ca  (/home/atoomic/workspace/perl/miniperl+0x54f4ca)
    #4 0x534b92  (/home/atoomic/workspace/perl/miniperl+0x534b92)
    #5 0x6406db  (/home/atoomic/workspace/perl/miniperl+0x6406db)
    #6 0x5866f1  (/home/atoomic/workspace/perl/miniperl+0x5866f1)
    #7 0x9e47d7  (/home/atoomic/workspace/perl/miniperl+0x9e47d7)
    #8 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 56 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x84ae71  (/home/atoomic/workspace/perl/miniperl+0x84ae71)
    #3 0x579772  (/home/atoomic/workspace/perl/miniperl+0x579772)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 26 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743d4a  (/home/atoomic/workspace/perl/miniperl+0x743d4a)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

Indirect leak of 26 byte(s) in 1 object(s) allocated from:
    #0 0x4d7bbf  (/home/atoomic/workspace/perl/miniperl+0x4d7bbf)
    #1 0x7169d6  (/home/atoomic/workspace/perl/miniperl+0x7169d6)
    #2 0x743cdd  (/home/atoomic/workspace/perl/miniperl+0x743cdd)
    #3 0x579e46  (/home/atoomic/workspace/perl/miniperl+0x579e46)
    #4 0x9e475b  (/home/atoomic/workspace/perl/miniperl+0x9e475b)
    #5 0x7f7093f2b041  (/lib64/libc.so.6+0x27041)

SUMMARY: AddressSanitizer: 57735 byte(s) leaked in 47 allocation(s).
Failed to build miniperl. Please run make minitest
make: *** [makefile:365: lib/buildcustomize.pl] Error 1

also view: #18012 and #18054
probably linked to #18107

@richardleach
Copy link
Contributor

I think a lot of these might be due to Perl_destruct bailing out early if it's the parent thread (or non-threaded build). If we define a couple of macros to implement this:

#if defined(__has_feature)
#  if __has_feature(address_sanitizer)
// code that builds only under AddressSanitizer
#  endif
#endif

They could then be used to skip early bail-out when ASan is in use.

@richardleach
Copy link
Contributor

Also been meaning to check if there's a regular ASan smoker or not.

@Tux
Copy link
Contributor

Tux commented Sep 2, 2020

I think a lot of these might be due to Perl_destruct bailing out early if it's the parent thread (or non-threaded build). If we define a couple of macros to implement this:

#if defined(__has_feature)
#  if __has_feature(address_sanitizer)
// code that builds only under AddressSanitizer

please use C89 comment style only.
If not for safety, do it for consistency

#  endif
#endif

They could then be used to skip early bail-out when ASan is in use.

@richardleach
Copy link
Contributor

@Tux - code above was just a rushed copy&paste from https://clang.llvm.org/docs/AddressSanitizer.html#conditional-compilation-with-has-feature-address-sanitizer, didn't mean to imply that's code to go directly into a PR.

Looks like we don't already have a __has_feature macro, so thinking there would be one new macro for that, then a separate macro that uses it to test for ASan. Sound ok?

@Tux
Copy link
Contributor

Tux commented Sep 2, 2020

Yes, sounds ok

@richardleach
Copy link
Contributor

@atoomic - if you comment out https://github.com/Perl/perl5/blob/blead/perl.c#L948, are there any leaks left?

@atoomic
Copy link
Member Author

atoomic commented Sep 2, 2020

@richardleach I'm not sure to understand the change you are suggesting, could you show me a diff?
thanks

@richardleach
Copy link
Contributor

@atoomic

diff --git a/perl.c b/perl.c
index 9f0f230301..2f48d63f15 100644
--- a/perl.c
+++ b/perl.c
@@ -946,7 +946,7 @@ perl_destruct(pTHXx)
        CopFILE_free(&PL_compiling);
 
        /* The exit() function will do everything that needs doing. */
-        return STATUS_EXIT;
+        /*return STATUS_EXIT;*/
     }
 
     /* Below, do clean up for when PERL_DESTRUCT_LEVEL is not 0 */

@atoomic
Copy link
Member Author

atoomic commented Sep 2, 2020

@richardleach commenting that STATUS_EXIT solves the leaks

@richardleach
Copy link
Contributor

Ok. I'm happy to have a crack at implementing the macros mentioned above and using them to prevent that early return STATUS_EXIT; when built with ASan.

@atoomic
Copy link
Member Author

atoomic commented Sep 2, 2020

excellent thanks

@iabyn
Copy link
Contributor

iabyn commented Sep 3, 2020 via email

@richardleach
Copy link
Contributor

I run ASan leak detect runs with the env var PERL_DESTRUCT_LEVEL=2.

That is documented in perlhacktips.pod, which I clearly hadn't read thoroughly enough. :(

Agree that there's therefore nothing to do.
(Unless there's a tidy way to output a warning if ASAN is used but PERL_DESTRUCT_LEVEL is < 2?)

@richardleach richardleach removed their assignment Sep 3, 2020
@richardleach richardleach added the Closable? We might be able to close this ticket, but we need to check with the reporter label Sep 3, 2020
@atoomic atoomic closed this as completed Sep 16, 2020
@jkeenan jkeenan removed the Closable? We might be able to close this ticket, but we need to check with the reporter label Feb 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants