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