Hey suckless, I think I found a bug in 9base rc. To replicate, execute following code:
#!/usr/bin/env rc fn sigint{ echo in sigint exit 1 } l=`{read} and send sigint to the program (for example by typing CTRL-C. The desired output would be 'in sigint', but instead, by shell tells me this: ^C7974: signal: interrupt fish: './rcbt' terminated by signal SIGSEGV (Adressbereichsfehler) When examining the core with gdb, this is the output: gdb /usr/local/plan9/bin/rc core.7973 Reading symbols from /usr/local/plan9/bin/rc...done. [New LWP 7973] Core was generated by `rc ./rcbt'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000000000404369 in p9main (argc=2, argv=0x7ffcd7275338) at exec.c:188 188 (*runq->code[runq->pc-1].f)(); `bt` results this: #0 0x0000000000404369 in p9main (argc=2, argv=0x7ffcd7275338) at exec.c:188 #1 0x0000000000410dd1 in main () `info locals` results this: Reading symbols from /usr/local/plan9/bin/rc...done. [New LWP 7973] Core was generated by `rc ./rcbt'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000000000404369 in p9main (argc=2, argv=0x7ffcd7275338) at exec.c:188 188 (*runq->code[runq->pc-1].f)(); bootstrap = {[0] = { f = 0x2, i = 2, s = 0x2 <error: Cannot access memory at address 0x2> }, [1] = { f = 0x404786 <Xmark>, i = 4212614, s = 0x404786 <Xmark> "UH\211\345\350(\366\377\377\220]\303UH\211\345\350b\366\377\377\220]\303UH\211\345H\203\354\020H\213\005\243\312-" }, [2] = { f = 0x404b1f <Xword>, i = 4213535, s = 0x404b1f <Xword> "UH\211\345H\213\005&\307-" }, [3] = { f = 0x4ab88e, i = 4896910, s = 0x4ab88e "*" }, [4] = { f = 0x405078 <Xassign>, i = 4214904, s = 0x405078 <Xassign> "UH\211\345H\203\354\020H\213\005\311\301-" }, [5] = { f = 0x404786 <Xmark>, i = 4212614, s = 0x404786 <Xmark> "UH\211\345\350(\366\377\377\220]\303UH\211\345\350b\366\377\377\220]\303UH\211\345H\203\354\020H\213\005\243\312-" }, [6] = { f = 0x404786 <Xmark>, i = 4212614, s = 0x404786 <Xmark> "UH\211\345\350(\366\377\377\220]\303UH\211\345\350b\366\377\377\220]\303UH\211\345H\203\354\020H\213\005\243\312-" }, [7] = { f = 0x404b1f <Xword>, i = 4213535, s = 0x404b1f <Xword> "UH\211\345H\213\005&\307-" }, [8] = { f = 0x4ab88e, i = 4896910, s = 0x4ab88e "*" }, [9] = { f = 0x4051c5 <Xdol>, i = 4215237, s = 0x4051c5 <Xdol> "UH\211\345H\203\354\060H\213\005|\300-" }, [10] = { f = 0x404b1f <Xword>, i = 4213535, s = 0x404b1f <Xword> "UH\211\345H\213\005&\307-" }, [11] = { f = 0xc69ac0, i = 13015744, s = 0xc69ac0 "/usr/local/plan9/etc/rcmain" }, [12] = { f = 0x404b1f <Xword>, i = 4213535, s = 0x404b1f <Xword> "UH\211\345H\213\005&\307-" }, [13] = { f = 0x4ab890, i = 4896912, s = 0x4ab890 "." }, [14] = { f = 0x40a073 <Xsimple>, i = 4235379, s = 0x40a073 <Xsimple> "UH\211\345H\203\354\060H\213\005\316q-" }, [15] = { f = 0x404592 <Xexit>, i = 4212114, s = 0x404592 <Xexit> "UH\211\345ATSH\203\354\020\350^\346\004" }, [16] = { f = 0x0, i = 0, s = 0x0 }, [17] = { f = 0x42bd41 <malloc+81>, i = 4373825, s = 0x42bd41 <malloc+81> "H\205\300H\211\302\017\204", <incomplete sequence \313> }, [18] = { f = 0x0, i = 0, s = 0x0 }, [19] = { f = 0x41ed96 <getenv+22>, i = 4320662, s = 0x41ed96 <getenv+22> "H\213-\273\003," }, [20] = { f = 0x7ffcd72751a0, i = -685289056, s = 0x7ffcd72751a0 "" }, [21] = { f = 0x4c4285, i = 4997765, s = 0x4c4285 "" }, [22] = { f = 0x7ffcd736f2dc, i = -684264740, s = 0x7ffcd736f2dc "linux-vdso.so.1" }, [23] = { f = 0x10, i = 16, s = 0x10 <error: Cannot access memory at address 0x10> }, [24] = { f = 0x1, i = 1, s = 0x1 <error: Cannot access memory at address 0x1> }, [25] = { f = 0x4007a9 <init_cacheinfo+489>, i = 4196265, s = 0x4007a9 <init_cacheinfo+489> "H\211Ǹ" }, [26] = { f = 0x0, i = 0, s = 0x0 }, [27] = { f = 0x1, i = 1, s = 0x1 <error: Cannot access memory at address 0x1> }, [28] = { f = 0x2, i = 2, s = 0x2 <error: Cannot access memory at address 0x2> }, [29] = { f = 0x7ffcd7275338, i = -685288648, s = 0x7ffcd7275338 "$\\'\327\374\177" }, [30] = { f = 0x7ffcd7275350, i = -685288624, s = 0x7ffcd7275350 ".\\'\327\374\177" }, [31] = { f = 0x2, i = 2, s = 0x2 <error: Cannot access memory at address 0x2> }} num = "7973\000\000\000\000\063\000\000" rcmain = 0xc69ac0 "/usr/local/plan9/etc/rcmain" i = 0 I am running arch linux 4.8.12-3 with gcc 6.2.1 and 9base commit de27e3fba5 (which is HEAD). `make -n -f Makefile rc` in 9base/rc results this: echo CC code.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 code.c echo CC exec.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 exec.c echo CC getflags.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 getflags.c echo CC glob.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 glob.c echo CC here.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 here.c echo CC io.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 io.c echo CC lex.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 lex.c echo CC pcmd.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 pcmd.c echo CC pfnc.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 pfnc.c echo CC simple.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 simple.c echo CC subr.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 subr.c echo CC trap.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 trap.c echo CC tree.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 tree.c echo CC unixcrap.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 unixcrap.c echo CC var.c cc -c -I. -DPLAN9PORT -DPREFIX="\"/usr/local/plan9\"" -g -I../lib9 -I/usr/local/plan9/include -I../lib9 var.c That's all information I could gather. I hope this can be reproduced. Greetings, pranomostro