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/

Attachment: signature.asc
Description: PGP signature

Reply via email to