hboissel / minishell

simple bash posix
0 stars 0 forks source link

Segfault double subshell with 3 cmd #50

Closed hboissel closed 1 year ago

hboissel commented 1 year ago
minishell$ (((echo test))&& (echo coucou) || (echo lol))
test
==400158== 
==400158== HEAP SUMMARY:
==400158==     in use at exit: 209,418 bytes in 269 blocks
==400158==   total heap usage: 1,014 allocs, 745 frees, 244,357 bytes allocated
==400158== 
==400158== LEAK SUMMARY:
==400158==    definitely lost: 0 bytes in 0 blocks
==400158==    indirectly lost: 0 bytes in 0 blocks
==400158==      possibly lost: 0 bytes in 0 blocks
==400158==    still reachable: 0 bytes in 0 blocks
==400158==         suppressed: 209,418 bytes in 269 blocks
==400158== 
==400158== For lists of detected and suppressed errors, rerun with: -s
==400158== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==400157== 
==400157== HEAP SUMMARY:
==400157==     in use at exit: 209,418 bytes in 269 blocks
==400157==   total heap usage: 1,003 allocs, 734 frees, 244,153 bytes allocated
==400157== 
==400157== LEAK SUMMARY:
==400157==    definitely lost: 0 bytes in 0 blocks
==400157==    indirectly lost: 0 bytes in 0 blocks
==400157==      possibly lost: 0 bytes in 0 blocks
==400157==    still reachable: 0 bytes in 0 blocks
==400157==         suppressed: 209,418 bytes in 269 blocks
==400157== 
==400157== For lists of detected and suppressed errors, rerun with: -s
==400157== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
coucou
==400159== 
==400159== HEAP SUMMARY:
==400159==     in use at exit: 209,418 bytes in 269 blocks
==400159==   total heap usage: 1,014 allocs, 745 frees, 244,361 bytes allocated
==400159== 
==400159== LEAK SUMMARY:
==400159==    definitely lost: 0 bytes in 0 blocks
==400159==    indirectly lost: 0 bytes in 0 blocks
==400159==      possibly lost: 0 bytes in 0 blocks
==400159==    still reachable: 0 bytes in 0 blocks
==400159==         suppressed: 209,418 bytes in 269 blocks
==400159== 
==400159== For lists of detected and suppressed errors, rerun with: -s
==400159== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==400156== Invalid read of size 1
==400156==    at 0x40A37C: eval_exec (eval_exec.c:25)
==400156==    by 0x40987C: exec_list (exec_list.c:70)
==400156==    by 0x40A3CF: eval_exec (eval_exec.c:26)
==400156==    by 0x40987C: exec_list (exec_list.c:70)
==400156==    by 0x40A3CF: eval_exec (eval_exec.c:26)
==400156==    by 0x40A0DB: exec_subshell (exec_subshell.c:82)
==400156==    by 0x408ED9: exec_simple_cmd (exec_simple_cmd.c:46)
==400156==    by 0x409984: exec_pipeline (exec_pipeline.c:84)
==400156==    by 0x40A43D: eval_exec (eval_exec.c:31)
==400156==    by 0x40B02C: process_line (minishell.c:61)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156==  Address 0x18 is not stack'd, malloc'd or (recently) free'd
==400156== 
==400156== 
==400156== Process terminating with default action of signal 11 (SIGSEGV)
==400156==  Access not within mapped region at address 0x18
==400156==    at 0x40A37C: eval_exec (eval_exec.c:25)
==400156==    by 0x40987C: exec_list (exec_list.c:70)
==400156==    by 0x40A3CF: eval_exec (eval_exec.c:26)
==400156==    by 0x40987C: exec_list (exec_list.c:70)
==400156==    by 0x40A3CF: eval_exec (eval_exec.c:26)
==400156==    by 0x40A0DB: exec_subshell (exec_subshell.c:82)
==400156==    by 0x408ED9: exec_simple_cmd (exec_simple_cmd.c:46)
==400156==    by 0x409984: exec_pipeline (exec_pipeline.c:84)
==400156==    by 0x40A43D: eval_exec (eval_exec.c:31)
==400156==    by 0x40B02C: process_line (minishell.c:61)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156==  If you believe this happened as a result of a stack
==400156==  overflow in your program's main thread (unlikely but
==400156==  possible), you can try to increase the size of the
==400156==  main thread stack using the --main-stacksize= flag.
==400156==  The main thread stack size used in this run was 8388608.
==400156== 
==400156== HEAP SUMMARY:
==400156==     in use at exit: 220,610 bytes in 390 blocks
==400156==   total heap usage: 1,003 allocs, 613 frees, 244,153 bytes allocated
==400156== 
==400156== 3 bytes in 1 blocks are still reachable in loss record 2 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x401F0C: get_pipe (parser_get.c:69)
==400156==    by 0x40158A: get_list_parsing (parser.c:65)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 3 bytes in 1 blocks are still reachable in loss record 3 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x4043AC: get_and (parser_get_utils.c:47)
==400156==    by 0x4015D6: get_list_parsing (parser.c:69)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 20 bytes in 10 blocks are still reachable in loss record 19 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x4042BD: get_par (parser_get_utils.c:23)
==400156==    by 0x4015FC: get_list_parsing (parser.c:71)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 31 bytes in 6 blocks are still reachable in loss record 27 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x401DF9: get_elem_txt (parser_get.c:40)
==400156==    by 0x401542: get_list_parsing (parser.c:61)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 40 bytes in 1 blocks are still reachable in loss record 30 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x403E5B: ft_lstnew_parsing (list_utils.c:18)
==400156==    by 0x401FBC: get_pipe (parser_get.c:80)
==400156==    by 0x40158A: get_list_parsing (parser.c:65)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 40 bytes in 1 blocks are still reachable in loss record 31 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x403E5B: ft_lstnew_parsing (list_utils.c:18)
==400156==    by 0x40445C: get_and (parser_get_utils.c:58)
==400156==    by 0x4015D6: get_list_parsing (parser.c:69)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 240 bytes in 6 blocks are still reachable in loss record 53 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x403E5B: ft_lstnew_parsing (list_utils.c:18)
==400156==    by 0x401E70: get_elem_txt (parser_get.c:51)
==400156==    by 0x401542: get_list_parsing (parser.c:61)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 400 bytes in 10 blocks are still reachable in loss record 55 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x403E5B: ft_lstnew_parsing (list_utils.c:18)
==400156==    by 0x40430E: get_par (parser_get_utils.c:29)
==400156==    by 0x4015FC: get_list_parsing (parser.c:71)
==400156==    by 0x40138F: parser (parser.c:111)
==400156==    by 0x40AFB1: process_line (minishell.c:55)
==400156==    by 0x40AEC0: main_loop (minishell.c:99)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 480 bytes in 1 blocks are still reachable in loss record 56 of 101
==400156==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x4088FA: init_env (init_env.c:23)
==400156==    by 0x40A9E4: init_shell (init_shell.c:19)
==400156==    by 0x40AE20: main_loop (minishell.c:84)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== 3,855 bytes in 59 blocks are still reachable in loss record 76 of 101
==400156==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==400156==    by 0x40B725: ft_strdup (in /mnt/nfs/homes/hboissel/Documents/minishell/minishell)
==400156==    by 0x408951: init_env (init_env.c:29)
==400156==    by 0x40A9E4: init_shell (init_shell.c:19)
==400156==    by 0x40AE20: main_loop (minishell.c:84)
==400156==    by 0x401323: main (main.c:17)
==400156== 
==400156== LEAK SUMMARY:
==400156==    definitely lost: 0 bytes in 0 blocks
==400156==    indirectly lost: 0 bytes in 0 blocks
==400156==      possibly lost: 0 bytes in 0 blocks
==400156==    still reachable: 5,112 bytes in 96 blocks
==400156==         suppressed: 215,498 bytes in 294 blocks
==400156== 
==400156== For lists of detected and suppressed errors, rerun with: -s
==400156== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)