Test case:
int main() {write(Stdio.read_file("readfileboom.pike"));}
Oddly enough, this works fine if run from a non-installed Pike:
rosuav@sikorsky:~/pike$ bin/pike readfileboom.pike
int main() {write(Stdio.read_file("readfileboom.pike"));}
But installing it and using that causes a crash:
rosuav@sikorsky:~/pike$ pike readfileboom.pike
/home/rosuav/pike/src/cyclic.c:39: Fatal error:
Unlink cyclic on lost cyclic struct.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Terminfo.pmod:920:Indexing
on illegal type.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Terminfo.pmod:920:Got : zero.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Terminfo.pmod:920:Index
: string(97..116).
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Terminfo.pmod:936:Placeholder
already has storage!
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:220:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:220:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:220:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:279:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:279:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:279:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:289:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:289:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:289:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:299:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:299:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:299:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:321:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:321:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:321:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:406:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:406:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:406:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:1394:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:1394:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:1394:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:1437:Must
return a value for a non-void function.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:1437:Expected: mixed.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/Readline.pike:1437:Got : void.
/usr/local/pike/8.0.3/lib/modules/Stdio.pmod.0:-: Warning: Compilation
failed: Compilation failed.
Backtrace at time of fatal:
-:1: PikeCompiler("", UNDEFINED, -1, -1, target, placeholder)->compile()
-:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED,
-1, -1, target, placeholder))
/usr/local/pike/8.0.3/lib/master.pike:790:
compile_string("#pike __REAL_VERSION__\n\ninherit
_Stdio;\n\n#ifdef
"+[94107],"/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/mod"+[9],0,object_program(Stdio),object(/usr/local/pike/8.0.
3/lib/modules/Stdio.pmod/module.pmod),UNDEFINED)
/usr/local/pike/8.0.3/lib/master.pike:1533:
master()->low_findprog("/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/module.pmod","",0,1)
/usr/local/pike/8.0.3/lib/master.pike:1656:
master()->findprog("/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/module.pmod",".pmod",0,1)
/usr/local/pike/8.0.3/lib/master.pike:1690:
master()->low_cast_to_program("/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/module",0,0,1)
/usr/local/pike/8.0.3/lib/master.pike:1939:
master()->low_cast_to_object("/usr/local/pike/8.0.3/lib/modules/Stdio.pmod/module.pmod",0,0)
/usr/local/pike/8.0.3/lib/master.pike:2157: Stdio->low_ind("module",1)
/usr/local/pike/8.0.3/lib/master.pike:2074: Stdio->module_checker()->`!()
/usr/local/pike/8.0.3/lib/master.pike:2214: Stdio->ind("read_file")
/usr/local/pike/8.0.3/lib/master.pike:2256: Stdio->`[]("read_file")
/usr/local/pike/8.0.3/lib/master.pike:2432: Stdio->ind("read_file")
/usr/local/pike/8.0.3/lib/master.pike:2472: Stdio->`[]("read_file")
-:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile()
-:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED,
-1, -1, target, UNDEFINED))
/usr/local/pike/8.0.3/lib/master.pike:790:
compile_string("int main()
{write(Stdio.read_file(\"readfileboom.pike\"));}\n","/home/rosuav/pike/readfileboom.pike",UNDEFINED,/home/rosuav/pike/readfileboom,0,UNDEFINED)
/usr/local/pike/8.0.3/lib/master.pike:1533:
master()->low_findprog("/home/rosuav/pike/readfileboom",".pike",UNDEFINED,UNDEFINED)
/usr/local/pike/8.0.3/lib/master.pike:1651:
master()->findprog("/home/rosuav/pike/readfileboom",".pike",UNDEFINED,UNDEFINED)
/usr/local/pike/8.0.3/lib/master.pike:1690:
master()->low_cast_to_program("/home/rosuav/pike/readfileboom","/usr/local/pike/8.0.3/lib/master.pike",UNDEFINED,UNDEFINED)
/usr/local/pike/8.0.3/lib/master.pike:1724:
master()->cast_to_program("/home/rosuav/pike/readfileboom.pike","/usr/local/pike/8.0.3/lib/master.pike",UNDEFINED)
Aborted
The problem came in with commit ec8008 and its change to
lib/master.pike.in - reverting that file (even without reverting the
rest of the commit) cures the abort. This is amd64 Linux, and 'make
clean' and 'make spotless' don't affect the crash.
Seems peculiar that this should cause problems.
ChrisA