I'm hitting an easily reproducible crash. It bisects to c5bf970 (expand: Add multi-byte support to pmatch, 2024-06-02). After bisecting I reduced it to this example (probably not minimal) echo \\ | dash -c 'foo=$(cat; printf .); foo=${foo%.}' stacktrace from gdb: Program terminated with signal SIGSEGV, Segmentation fault. #0 0x000061d927e57bbd in expandarg (arg=arg@entry=0x61d927e6dce00000, arglist=arglist@entry=0x7fff2ea3bbe0, flag=flag@entry=4) at expand.c:228 228 argbackq = arg->narg.backquote; (gdb) bt #0 0x000061d927e57bbd in expandarg (arg=arg@entry=0x61d927e6dce00000, arglist=arglist@entry=0x7fff2ea3bbe0, flag=flag@entry=4) at expand.c:228 #1 0x000061d927e53168 in evalcommand (cmd=0x61d927e6dd10 <stackbase+400>, flags=1) at eval.c:865 #2 0x000061d927e522e7 in evaltree (n=0x61d927e6dd10 <stackbase+400>, flags=1) at eval.c:305 #3 0x000061d927e522e7 in evaltree (n=0x61d927e6dd10 <stackbase+400>, n@entry=0x61d927e6dd30 <stackbase+432>, flags=1) at eval.c:305 #4 0x000061d927e52cf3 in evalstring (s=0x61d927e6db88 <stackbase+8> "foo=$(cat; printf .); foo=${foo%.}", flags=1) at eval.c:190 #5 0x000061d927e506f5 in main (argc=3, argv=0x7fff2ea3bec8) at main.c:176