Internal compiler error triggered by syntax error in implicit create argument list
Observed in the wild:
$ cat Bang.pmod
class Bang(pang) {
void bang() {}
}
$ pike -M.
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> Bang;
Bang.pmod:1:syntax error, unexpected ')', expecting TOK_IDENTIFIER
Bang.pmod:2:Missing ';'.
Bang.pmod:3:Missing ';'.
/var/tmp/portage/dev-lang/pike-8.0.1738-r3/work/Pike-v8.0.1738/src/block_allocator.c:311: Fatal error:
ptr 0x55a2c30fd730 not in any page.
Backtrace at time of fatal:
-:1:
PikeCompiler("", Tools.Hilfe.StdinHilfe()->HilfeCompileHandler(), -1, -1, UNDEFINED, UNDEFINED)->compile()
-:1:
DefaultCompilerEnvironment->compile(PikeCompiler("", Tools.Hilfe.StdinHilfe()->HilfeCompileHandler(), -1, -1, UNDEFINED, UNDEFINED))
/usr/lib64/pike/master.pike:743:
compile_string("mapping(string:mixed) ___hilfe = ___Hilfe->variables;\n# 1\nmixed ___HilfeWrapper() { return Bang; ; }\n","HilfeInput",Tools.Hilfe.StdinHilfe()->HilfeCompileHandler(),UNDEFINED,UNDEFINED,UNDEFINED)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2311:
Tools.Hilfe.StdinHilfe()->hilfe_compile("mixed ___HilfeWrapper() { return Bang; ; }",UNDEFINED)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2352:
Tools.Hilfe.StdinHilfe()->evaluate("mixed ___HilfeWrapper() { return Bang; ; }",1)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2097:
Tools.Hilfe.StdinHilfe()->parse_expression(Tools.Hilfe.Expression(({ /* 2 elements */
"Bang",
";"
})))
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:1651:
Tools.Hilfe.StdinHilfe()->add_buffer("Bang;")
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:1598:
Tools.Hilfe.StdinHilfe()->add_input_line("Bang;")
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2562:
Tools.Hilfe.StdinHilfe()->create(UNDEFINED)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2481: Tools.Hilfe.StdinHilfe()
Aborted
The crash seems to be due to the nested program not being popped correctly.