[bug #66870] memory corruption

anonymous <[email protected]>
Newsgroups gmane.comp.gnu.make.bugs
Message-ID <[email protected]>
URL:
  <https://savannah.gnu.org/bugs/?66870>

                 Summary: memory corruption
                   Group: make
               Submitter: None
               Submitted: Wed 05 Mar 2025 01:18:16 AM UTC
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 4.4.1
        Operating System: POSIX-Based
           Fixed Release: None
           Triage Status: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Wed 05 Mar 2025 01:18:16 AM UTC By: Anonymous
The following Makefile causes memory corruption in the "make" process.

$ cat /tmp/Makefile 
.ONESHELL:
SHELL = echo
.SHELLFLAGS = --a=x
q.txt:
	a

How bad this is depends on how long the default shell name is.

gdb backtrace:

(gdb) bt
#0  0x00007ffff7c9e4fc in __pthread_kill_implementation () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#1  0x00007ffff7c544c2 in raise () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#2  0x00007ffff7c3e4a3 in abort () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#3  0x00007ffff7c3f3c7 in __libc_message_impl.cold () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#4  0x00007ffff7ca7b15 in malloc_printerr () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#5  0x00007ffff7ca7cdc in munmap_chunk () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#6  0x00007ffff7cac388 in free () from
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6
#7  0x00000000004191d3 in construct_command_argv (line=line@entry=0x492350
"a", restp=restp@entry=0x7fffffffb368, file=<optimized out>, cmd_flags=0,
batch_filename=batch_filename@entry=0x4a1a90)
    at src/job.c:3800
#8  0x0000000000419363 in start_job_command (child=child@entry=0x4a1a60) at
src/job.c:1280
#9  0x000000000041a144 in start_waiting_job (c=c@entry=0x4a1a60) at
src/job.c:1646
#10 0x000000000041ab02 in new_job (file=0x498aa0) at src/job.c:1960
#11 0x0000000000426545 in remake_file (file=0x498aa0) at src/remake.c:1313
#12 update_file_1 (depth=<optimized out>, file=<optimized out>) at
src/remake.c:905
#13 update_file (file=file@entry=0x498aa0, depth=<optimized out>) at
src/remake.c:367
#14 0x0000000000426e91 in update_goal_chain (goaldeps=<optimized out>) at
src/remake.c:184
#15 0x000000000040a035 in main (argc=<optimized out>, argv=<optimized out>,
envp=<optimized out>) at src/main.c:2918

valgrind output:

/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/bin/valgrind
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make -f
/tmp/Makefile
==24996== Memcheck, a memory error detector
==24996== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==24996== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==24996== Command:
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make -f
/tmp/Makefile
==24996== 
==24996== Invalid write of size 1
==24996==    at 0x484D704: stpcpy (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x41851D: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==  Address 0x4fb93cd is 0 bytes after a block of size 13 alloc'd
==24996==    at 0x484176B: malloc (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x41D8F4: xmalloc (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x418493: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996== 
==24996== Invalid write of size 1
==24996==    at 0x484D717: stpcpy (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x41851D: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==  Address 0x4fb940b is 5 bytes before a block of size 48 free'd
==24996==    at 0x48449E4: free (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x418824: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4184E3: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==  Block was alloc'd at
==24996==    at 0x484176B: malloc (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x41D8F4: xmalloc (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4180A7: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4184E3: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996== 
==24996== Invalid write of size 1
==24996==    at 0x484DFB3: memmove (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x418566: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==  Address 0x4fb9413 is 3 bytes inside a block of size 48 free'd
==24996==    at 0x48449E4: free (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x418824: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4184E3: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==  Block was alloc'd at
==24996==    at 0x484176B: malloc (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24996==    by 0x41D8F4: xmalloc (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4180A7: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4184E3: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24996== 
a
==24997== Syscall param execve(argv[i]) points to unaddressable byte(s)
==24997==    at 0x4AF21C7: execve (in
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6)
==24997==    by 0x4B0BD3C: __spawni_child (in
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6)
==24997==    by 0x4B225FF: clone (in
/gnu/store/hw6g2kjayxnqi8rwpnmpraalxi0djkxc-glibc-2.39/lib/libc.so.6)
==24997==  Address 0x4fb93cd is 0 bytes after a block of size 13 alloc'd
==24997==    at 0x484176B: malloc (in
/gnu/store/s566j0nnm5pd2ifmkbclb3bhcfm2x27v-valgrind-3.22.0/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==24997==    by 0x41D8F4: xmalloc (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x418493: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x4191B7: construct_command_argv (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x419362: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x41A143: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x41AB01: new_job (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x426544: ??? (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x426E90: update_goal_chain (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997==    by 0x40A034: main (in
/gnu/store/biin1q4vz75zmlfhz561lvwlzcgd5c3q-make-4.4.1/bin/make)
==24997== 
/gnu/store/m0xdsa8cfq6mq1kxgxmpmpg71la4f0b9-bash-minimal-5.1.16/bin/sh -c a=x
a
==24996== 
==24996== HEAP SUMMARY:
==24996==     in use at exit: 165,605 bytes in 1,658 blocks
==24996==   total heap usage: 5,164 allocs, 3,506 frees, 543,435 bytes
allocated
==24996== 
==24996== LEAK SUMMARY:
==24996==    definitely lost: 0 bytes in 0 blocks
==24996==    indirectly lost: 0 bytes in 0 blocks
==24996==      possibly lost: 0 bytes in 0 blocks
==24996==    still reachable: 165,605 bytes in 1,658 blocks
==24996==         suppressed: 0 bytes in 0 blocks
==24996== Rerun with --leak-check=full to see details of leaked memory
==24996== 
==24996== For lists of detected and suppressed errors, rerun with: -s
==24996== ERROR SUMMARY: 72 errors from 3 contexts (suppressed: 0 from 0)






    _______________________________________________________
File Attachments:


-------------------------------------------------------
Name: make.patch  Size: 1009B
<https://file.savannah.gnu.org/file/make.patch?file_id=56972>

    AGPL NOTICE

These attachments are served by Savane. You can download the corresponding
source code of Savane at
https://savannah.gnu.org/source/savane-513955078e56c124c506c834d031bbe09cbf4040.tar.gz

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?66870>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQQk97aszIMMAvLLwm6qLAuaBUf3TgUCZ8emYgAKCRCqLAuaBUf3
Tlp6AQDigQrhohMfDBRe+SHadJ6ji44Z4VC2ae5eurUQ29etUgEA4cDrHBSX6Pp0
OE6UGWrLk8AZPZ+0pHXtjCaMDbBbsgk=
=PzT0
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.