Cutting edge Pike 8.1 14f81612b94b884ccce220a2d0799e392c1d8aac Compiled with rtldebug.
I'm trying to change the pgsql driver to support terminating threads which are idle (i.e. drop them back into the backend, which will reactivate them when new data arrives). Now, so much for theory...
=============================================================================
Without debugging, I had this: Terminate a thread, then *after* the return I get: Attempt to call the NULL-value Unknown program: 0() (consistently). It happens *after* returning from a thread, but *before* a read callback is called. This must be happening at thread destruction or in the backend.
============================================================================= Compiling pike with debugging gives identical runtime errors.
============================================================================= Running with -d1 reveals: A fatal runtime error (which is not seen without -d1):
/var/src/roxen/gpike/src/program.c:8316: Fatal error: Que, numbers out of whack1 [Thread swap, Pike_interpreter.thread_state=0x185e730] /usr/local/pike/8.1.0/lib/master.pike:2368:(16653): (Q) branch if not zero(+0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2370:(16711): local(3) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2370:(16791): call builtin 1(5) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2370:(16847): branch if zero(+0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2379:(17761): local(3) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2379:(17844): dumb return 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2412:(22764): assign local(1) 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2412:(22878): constant(12) 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2412:(22972): == 495, 0 /usr/local/pike/8.1.0/lib/master.pike:2412:(23050): == 495, 0 /usr/local/pike/8.1.0/lib/master.pike:2412:(23072): (Q) branch if zero(+0) 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2414:(23330): local(1) 493, 0 /usr/local/pike/8.1.0/lib/master.pike:2414:(23413): undefinedp 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2414:(23506): (Q) branch if zero(+0) 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2417:(24149): global(5) 493, 0 /usr/local/pike/8.1.0/lib/master.pike:2417:(24229): local(0) 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2417:(24302): clear string subtype 495, 0 /usr/local/pike/8.1.0/lib/master.pike:2417:(24356): local(1) 495, 0 /usr/local/pike/8.1.0/lib/master.pike:2417:(24436): assign and pop 496, 0 /usr/local/pike/8.1.0/lib/master.pike:2417:(24472): assign and pop 496, 0 /usr/local/pike/8.1.0/lib/master.pike:2420:(24572): local(1) 493, 0 /usr/local/pike/8.1.0/lib/master.pike:2420:(24652): dumb return 494, 0 /usr/local/pike/8.1.0/lib/master.pike:2985:(41463): fill_stack(3,1) 492, 0 /usr/local/pike/8.1.0/lib/master.pike:2985:(41552): mark_at(3) 492, 0 /usr/local/pike/8.1.0/lib/master.pike:2985:(41619): pop to mark 492, 1 /usr/local/pike/8.1.0/lib/master.pike:2985:(41712): fill_stack(9,0) 492, 0 /usr/local/pike/8.1.0/lib/master.pike:2985:(41798): init_frame(3,9) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:2990:(41877): external(194,1) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:2990:(41907): local index(0) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:2990:(42030): local index(0) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:2990:(42049): branch if zero(+0) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:2996:(42382): branch if !local(1) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:2996:(42485): local(1) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:2996:(42568): call builtin 1(14) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:2996:(42624): branch if not zero(+0) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3001:(43249): local(0) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3001:(43325): string(28) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3001:(43514): assign local and pop(3) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3002:(43625): clear n local(4,1) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3003:(43724): sizeof local(3) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3003:(43832): push 1 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3003:(43891): > 500, 0 /usr/local/pike/8.1.0/lib/master.pike:3003:(43991): (Q) branch if zero(+0) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3029:(49031): local(0) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3029:(49107): string(29) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3030:(49296): assign local(3) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3030:(49407): int index(0) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3030:(49536): 2 locals(1,2) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3030:(49679): call lfun <n>(25,3) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2967:(39263): fill_stack(3,1) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2967:(39352): mark_at(3) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2967:(39419): pop to mark 501, 1 /usr/local/pike/8.1.0/lib/master.pike:2967:(39512): init_frame(3,3) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2969:(39568): local(2) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:2969:(39671): call lfun <n>(23,1) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2928:(35139): fill_stack(1,1) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2928:(35228): mark_at(1) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2928:(35295): pop to mark 502, 1 /usr/local/pike/8.1.0/lib/master.pike:2928:(35388): fill_stack(4,0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2928:(35471): init_frame(1,4) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2929:(35527): global(0) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2929:(35586): branch if not zero(+0) 506, 0 /usr/local/pike/8.1.0/lib/master.pike:2933:(36073): branch if local(0) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2933:(36169): global(0) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2933:(36242): return 506, 0 /usr/local/pike/8.1.0/lib/master.pike:2969:(39707): local index(0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2969:(39830): local index(0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:2400:(21151): fill_stack(1,1) 503, 0 /usr/local/pike/8.1.0/lib/master.pike:2400:(21240): mark_at(1) 503, 0 /usr/local/pike/8.1.0/lib/master.pike:2400:(21307): pop to mark 503, 1 /usr/local/pike/8.1.0/lib/master.pike:2400:(21400): fill_stack(2,0) 503, 0 /usr/local/pike/8.1.0/lib/master.pike:2400:(21483): init_frame(1,2) 504, 0 /usr/local/pike/8.1.0/lib/master.pike:2401:(21550): clear n local(1,1) 504, 0 /usr/local/pike/8.1.0/lib/master.pike:2402:(21669): global[local](5,0) 504, 0 /usr/local/pike/8.1.0/lib/master.pike:2402:(21699): assign local(1) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2402:(21813): undefinedp 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2402:(21906): (Q) branch if not zero(+0) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2403:(21964): local(1) 504, 0 /usr/local/pike/8.1.0/lib/master.pike:2403:(22067): external(192,1) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2403:(22097): != 506, 0 /usr/local/pike/8.1.0/lib/master.pike:2403:(22178): != 506, 0 /usr/local/pike/8.1.0/lib/master.pike:2403:(22200): (Q) branch if zero(+0) 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2404:(22269): local(1) 504, 0 /usr/local/pike/8.1.0/lib/master.pike:2404:(22349): dumb return 505, 0 /usr/local/pike/8.1.0/lib/master.pike:2970:(39860): return 502, 0 /usr/local/pike/8.1.0/lib/master.pike:3030:(49715): assign local and pop(4) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3031:(49818): & local(3) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3031:(49895): push 1 500, 0 /usr/local/pike/8.1.0/lib/master.pike:3031:(49954): ltosval2 and free 501, 0 /usr/local/pike/8.1.0/lib/master.pike:3028:(50184): assign and pop 501, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(50328): local(3) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(50411): & local(5) 499, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(50499): clear n local(5,1) 501, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(50598): push 0 501, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(50646): branch(+0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(51279): foreach(+0) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(51516): pop_n_elems(4) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:3033:(51567): pop_n_elems(4) 502, 0 /usr/local/pike/8.1.0/lib/master.pike:3048:(51608): local(4) 498, 0 /usr/local/pike/8.1.0/lib/master.pike:3048:(51691): dumb return 499, 0 Que, numbers out of whack1 Backtrace at time of fatal: -:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile() -:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1, -1, ta rget, UNDEFINED)) /usr/local/pike/8.1.0/lib/master.pike:673: compile_string("#pike __REAL_VERSION__\n#pragma strict_types\n#require con stant(SSL.Cipher)\n\n//! SSL.Connection keeps the state r"+[29221],"/usr/l ocal/pike/8.1.0/lib/modules/SSL.pmod/Connection.pike",0,SSL.Connection,0,U NDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/Connect ion",".pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1577: master()->findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/Connection" ,".pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/ Connection",0,0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2105: SSL->low_ind("Connection",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: SSL->ind("Connection") /usr/local/pike/8.1.0/lib/master.pike:2187: SSL->`[]("Connection") /usr/local/pike/8.1.0/lib/master.pike:2368: master()->joinnode(({ /* 1 element */ SSL }))->ind("Connection") /usr/local/pike/8.1.0/lib/master.pike:2408: master()->joinnode(({ /* 1 element */ SSL }))->`[]("Connection") -:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile() -:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1, -1, ta rget, UNDEFINED)) /usr/local/pike/8.1.0/lib/master.pike:673: compile_string("#pike __REAL_VERSION__\n// #pragma strict_types\n#require constant(SSL.Cipher)\n\n//! The state object handles a one-way stre"+[1208 2],"/usr/local/pike/8.1.0/lib/modules/SSL.pmod/State.pike",0,SSL.State,0,U NDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/State", ".pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1577: master()->findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/State",".pi ke",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/ State",0,0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2105: SSL->low_ind("State",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: SSL->ind("State") /usr/local/pike/8.1.0/lib/master.pike:2187: SSL->`[]("State") /usr/local/pike/8.1.0/lib/master.pike:2368: master()->joinnode(({ /* 1 element */ SSL }))->ind("State") /usr/local/pike/8.1.0/lib/master.pike:2408: master()->joinnode(({ /* 1 element */ SSL }))->`[]("State") -:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile() -:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1, -1, ta rget, UNDEFINED)) /usr/local/pike/8.1.0/lib/master.pike:673: compile_string("#pike __REAL_VERSION__\n#pragma strict_types\n#require con stant(SSL.Cipher)\n\n//! The most important information in a se"+[22687]," /usr/local/pike/8.1.0/lib/modules/SSL.pmod/Session.pike",0,SSL.Session,0,U NDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/Session ",".pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1577: master()->findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/Session",". pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/ Session",0,0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2105: SSL->low_ind("Session",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: SSL->ind("Session") /usr/local/pike/8.1.0/lib/master.pike:2187: SSL->`[]("Session") /usr/local/pike/8.1.0/lib/master.pike:2368: master()->joinnode(({ /* 1 element */ SSL }))->ind("Session") /usr/local/pike/8.1.0/lib/master.pike:2408: master()->joinnode(({ /* 1 element */ SSL }))->`[]("Session") -:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile() -:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1, -1, ta rget, UNDEFINED)) /usr/local/pike/8.1.0/lib/master.pike:673: compile_string("#pike __REAL_VERSION__\n#pragma strict_types\n#require con stant(Crypto.Hash)\n\n//! Keeps the state that is shared by all"+[28138]," /usr/local/pike/8.1.0/lib/modules/SSL.pmod/Context.pike",0,SSL.Context,0,U NDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/Context ",".pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1577: master()->findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/Context",". pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/ Context",0,0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2105: SSL->low_ind("Context",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: SSL->ind("Context") /usr/local/pike/8.1.0/lib/master.pike:2187: SSL->`[]("Context") /usr/local/pike/8.1.0/lib/master.pike:2368: master()->joinnode(({ /* 1 element */ SSL }))->ind("Context") /usr/local/pike/8.1.0/lib/master.pike:2408: master()->joinnode(({ /* 1 element */ SSL }))->`[]("Context") -:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile() -:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1, -1, ta rget, UNDEFINED)) /usr/local/pike/8.1.0/lib/master.pike:673: compile_string("#pike __REAL_VERSION__\n#require constant(SSL.Cipher)\n\n/ /! Interface similar to @[Stdio.File].\n//!\n//! @ul\n//! @item\n//! H"+ [62796],"/usr/local/pike/8.1.0/lib/modules/SSL.pmod/File.pike",0,SSL.File, 0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/File"," .pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1577: master()->findprog("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/File",".pik e",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/SSL.pmod/ File",0,0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2105: SSL->low_ind("File",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: SSL->ind("File") /usr/local/pike/8.1.0/lib/master.pike:2187: SSL->`[]("File") /usr/local/pike/8.1.0/lib/master.pike:2368: SSL->ind("File") /usr/local/pike/8.1.0/lib/master.pike:2408: SSL->`[]("File") /usr/local/pike/8.1.0/lib/master.pike:666: compile_string("/*\n * Some pgsql utility functions.\n * They are kept her e to avoid circular refe"+[33311],"/usr/local/pike/8.1.0/lib/modules/Sql.p mod/pgsql_util.pmod",0,object_program(Sql.pgsql_util),__null_program(),UND EFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/pgsql_u til.pmod","",0,1) /usr/local/pike/8.1.0/lib/master.pike:1582: master()->findprog("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/pgsql_util. pmod",".pmod",0,1) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/ pgsql_util",0,0,1) /usr/local/pike/8.1.0/lib/master.pike:1865: master()->low_cast_to_object("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/p gsql_util.pmod",0,0) /usr/local/pike/8.1.0/lib/master.pike:2088: Sql->low_ind("pgsql_util",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: Sql->ind("pgsql_util") /usr/local/pike/8.1.0/lib/master.pike:2187: Sql->`[]("pgsql_util") /usr/local/pike/8.1.0/lib/master.pike:2368: master()->joinnode(({ /* 1 element */ Sql }))->ind("pgsql_util") /usr/local/pike/8.1.0/lib/master.pike:2408: master()->joinnode(({ /* 1 element */ Sql }))->`[]("pgsql_util") -:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile() -:1: DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1, -1, ta rget, UNDEFINED)) /usr/local/pike/8.1.0/lib/master.pike:673: compile_string("/*\n * This is the PostgreSQL direct network module for Pi ke.\n */\n\n//! This is an interface to the PostgreSQL database\n//!"+[639 01],"/usr/local/pike/8.1.0/lib/modules/Sql.pmod/pgsql.pike",0,Sql.pgsql,0, UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1459: master()->low_findprog("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/pgsql", ".pike",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1577: master()->findprog("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/pgsql",".pi ke",0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:1616: master()->low_cast_to_program("/usr/local/pike/8.1.0/lib/modules/Sql.pmod/ pgsql",0,0,UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2105: Sql->low_ind("pgsql",UNDEFINED) /usr/local/pike/8.1.0/lib/master.pike:2163: Sql->ind("pgsql") /usr/local/pike/8.1.0/lib/master.pike:2187: Sql->`[]("pgsql") /usr/local/pike/8.1.0/lib/master.pike:2368: Sql->ind("pgsql") /usr/local/pike/8.1.0/lib/master.pike:2408: Sql->`[]("pgsql") /usr/local/pike/8.1.0/lib/modules/Sql.pmod/Sql.pike:145: Sql.Sql()->find_dbm("pgsql") /usr/local/pike/8.1.0/lib/modules/Sql.pmod/Sql.pike:336: Sql.Sql()->create("db.nl","els","els","CENSORED",ma pping[1]) /home/srb/bin/sql.pike:21: /main()->caa() -:1: Pike.Backend(0)->`()(3600.0) Aborted
============================================================================= Running with -d2 is similar if not identical. ============================================================================= Running with -d3 is different: /var/src/roxen/gpike/src/program.c:8316: Fatal error: Que, numbers out of whack1 [Thread swap, Pike_interpreter.thread_state=0x13a4730] /usr/local/pike/8.1.0/lib/master.pike:2417:(26568): clear string subtype 495, 87 /usr/local/pike/8.1.0/lib/master.pike:2417:(26622): local(1) 495, 87 /usr/local/pike/8.1.0/lib/master.pike:2417:(26702): assign and pop 496, 87 /usr/local/pike/8.1.0/lib/master.pike:2417:(26738): assign and pop 496, 87 /usr/local/pike/8.1.0/lib/master.pike:2417:(26829): pop synch mark 493, 87 /usr/local/pike/8.1.0/lib/master.pike:2420:(26870): local(1) 493, 86 /usr/local/pike/8.1.0/lib/master.pike:2420:(26953): dumb return 494, 86 /usr/local/pike/8.1.0/lib/master.pike:2985:(47563): fill_stack(3,1) 492, 86 /usr/local/pike/8.1.0/lib/master.pike:2985:(47652): mark_at(3) 492, 86 /usr/local/pike/8.1.0/lib/master.pike:2985:(47719): pop to mark 492, 87 /usr/local/pike/8.1.0/lib/master.pike:2985:(47812): fill_stack(9,0) 492, 86 /usr/local/pike/8.1.0/lib/master.pike:2985:(47898): init_frame(3,9) 498, 86 /usr/local/pike/8.1.0/lib/master.pike:2990:(47977): external(194,1) 498, 86 /usr/local/pike/8.1.0/lib/master.pike:2990:(48007): local index(0) 499, 86 /usr/local/pike/8.1.0/lib/master.pike:2990:(48130): local index(0) 499, 86 /usr/local/pike/8.1.0/lib/master.pike:2990:(48149): branch if zero(+0) 499, 86 /usr/local/pike/8.1.0/lib/master.pike:2996:(48482): branch if !local(1) 498, 86 /usr/local/pike/8.1.0/lib/master.pike:2996:(48585): local(1) 498, 86 /usr/local/pike/8.1.0/lib/master.pike:2996:(48668): call builtin 1(14) 499, 86 /usr/local/pike/8.1.0/lib/master.pike:2996:(48724): branch if not zero(+0) 499, 86 /usr/local/pike/8.1.0/lib/master.pike:3002:(49432): synch mark 498, 86 /usr/local/pike/8.1.0/lib/master.pike:3001:(49488): local(0) 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3001:(49561): string(28) 499, 87 /usr/local/pike/8.1.0/lib/master.pike:3001:(49750): assign local and pop(3) 499, 87 /usr/local/pike/8.1.0/lib/master.pike:3002:(49861): clear n local(4,1) 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3002:(49960): pop synch mark 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3003:(49990): sizeof local(3) 498, 86 /usr/local/pike/8.1.0/lib/master.pike:3003:(50101): push 1 499, 86 /usr/local/pike/8.1.0/lib/master.pike:3003:(50160): > 500, 86 /usr/local/pike/8.1.0/lib/master.pike:3003:(50260): (Q) branch if zero(+0) 499, 86 /usr/local/pike/8.1.0/lib/master.pike:3032:(56666): synch mark 498, 86 /usr/local/pike/8.1.0/lib/master.pike:3029:(56722): synch mark 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3029:(56771): local(0) 498, 88 /usr/local/pike/8.1.0/lib/master.pike:3029:(56844): string(29) 499, 88 /usr/local/pike/8.1.0/lib/master.pike:3029:(57033): assign local and pop(3) 499, 88 /usr/local/pike/8.1.0/lib/master.pike:3029:(57133): pop synch mark 498, 88 /usr/local/pike/8.1.0/lib/master.pike:3028:(57163): synch mark 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3030:(57219): local(3) 498, 88 /usr/local/pike/8.1.0/lib/master.pike:3030:(57299): int index(0) 499, 88 /usr/local/pike/8.1.0/lib/master.pike:3030:(57428): 2 locals(1,2) 499, 88 /usr/local/pike/8.1.0/lib/master.pike:3030:(57571): call lfun <n>(25,3) 501, 88 /usr/local/pike/8.1.0/lib/master.pike:2967:(45127): fill_stack(3,1) 501, 88 /usr/local/pike/8.1.0/lib/master.pike:2967:(45216): mark_at(3) 501, 88 /usr/local/pike/8.1.0/lib/master.pike:2967:(45283): pop to mark 501, 89 /usr/local/pike/8.1.0/lib/master.pike:2967:(45376): init_frame(3,3) 501, 88 /usr/local/pike/8.1.0/lib/master.pike:2969:(45432): local(2) 501, 88 /usr/local/pike/8.1.0/lib/master.pike:2969:(45535): call lfun <n>(23,1) 502, 88 /usr/local/pike/8.1.0/lib/master.pike:2928:(40219): fill_stack(1,1) 502, 88 /usr/local/pike/8.1.0/lib/master.pike:2928:(40308): mark_at(1) 502, 88 /usr/local/pike/8.1.0/lib/master.pike:2928:(40375): pop to mark 502, 89 /usr/local/pike/8.1.0/lib/master.pike:2928:(40468): fill_stack(4,0) 502, 88 /usr/local/pike/8.1.0/lib/master.pike:2928:(40551): init_frame(1,4) 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2929:(40607): global(0) 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2929:(40666): branch if not zero(+0) 506, 88 /usr/local/pike/8.1.0/lib/master.pike:2933:(41236): branch if local(0) 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2933:(41332): global(0) 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2933:(41405): return 506, 88 /usr/local/pike/8.1.0/lib/master.pike:2969:(45571): local index(0) 502, 88 /usr/local/pike/8.1.0/lib/master.pike:2969:(45694): local index(0) 502, 88 /usr/local/pike/8.1.0/lib/master.pike:2400:(22879): fill_stack(1,1) 503, 88 /usr/local/pike/8.1.0/lib/master.pike:2400:(22968): mark_at(1) 503, 88 /usr/local/pike/8.1.0/lib/master.pike:2400:(23035): pop to mark 503, 89 /usr/local/pike/8.1.0/lib/master.pike:2400:(23128): fill_stack(2,0) 503, 88 /usr/local/pike/8.1.0/lib/master.pike:2400:(23211): init_frame(1,2) 504, 88 /usr/local/pike/8.1.0/lib/master.pike:2401:(23267): synch mark 504, 88 /usr/local/pike/8.1.0/lib/master.pike:2401:(23327): clear n local(1,1) 504, 89 /usr/local/pike/8.1.0/lib/master.pike:2401:(23426): pop synch mark 504, 89 /usr/local/pike/8.1.0/lib/master.pike:2402:(23476): global[local](5,0) 504, 88 /usr/local/pike/8.1.0/lib/master.pike:2402:(23506): assign local(1) 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2402:(23620): undefinedp 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2402:(23713): (Q) branch if not zero(+0) 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2408:(23771): synch mark 504, 88 /usr/local/pike/8.1.0/lib/master.pike:2403:(23824): local(1) 504, 89 /usr/local/pike/8.1.0/lib/master.pike:2403:(23927): external(192,1) 505, 89 /usr/local/pike/8.1.0/lib/master.pike:2403:(23957): != 506, 89 /usr/local/pike/8.1.0/lib/master.pike:2403:(24038): != 506, 89 /usr/local/pike/8.1.0/lib/master.pike:2403:(24060): (Q) branch if zero(+0) 505, 89 /usr/local/pike/8.1.0/lib/master.pike:2404:(24118): local(1) 504, 89 /usr/local/pike/8.1.0/lib/master.pike:2404:(24198): pop mark 505, 89 /usr/local/pike/8.1.0/lib/master.pike:2404:(24242): return 505, 88 /usr/local/pike/8.1.0/lib/master.pike:2970:(45724): return 502, 88 /usr/local/pike/8.1.0/lib/master.pike:3030:(57607): assign local and pop(4) 499, 88 /usr/local/pike/8.1.0/lib/master.pike:3031:(57710): & local(3) 498, 88 /usr/local/pike/8.1.0/lib/master.pike:3031:(57787): push 1 500, 88 /usr/local/pike/8.1.0/lib/master.pike:3031:(57846): ltosval2 and free 501, 88 /usr/local/pike/8.1.0/lib/master.pike:3028:(58076): assign and pop 501, 88 /usr/local/pike/8.1.0/lib/master.pike:3028:(58205): pop synch mark 498, 88 /usr/local/pike/8.1.0/lib/master.pike:3032:(58235): pop synch mark 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(58280): synch mark 498, 86 /usr/local/pike/8.1.0/lib/master.pike:3033:(58336): local(3) 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(58416): & local(5) 499, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(58504): clear n local(5,1) 501, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(58603): push 0 501, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(58651): branch(+0) 502, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(59367): foreach(+0) 502, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(59604): pop_n_elems(4) 502, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(59655): pop_n_elems(4) 502, 87 /usr/local/pike/8.1.0/lib/master.pike:3033:(59685): pop synch mark 498, 87 /usr/local/pike/8.1.0/lib/master.pike:3048:(59726): local(4) 498, 86 /usr/local/pike/8.1.0/lib/master.pike:3048:(59809): dumb return 499, 86 Que, numbers out of whack1 /var/src/roxen/gpike/src/interpret_functions.h:1604: Fatal error: Mark sp diff in catch context pop. Aborted
============================================================================= Running with -d4 is rather strange: It starts out with a rather large delay before any debugging output is produced (several seconds). Then this: /var/src/roxen/gpike/src/backend.cmod:610: Fatal error: Free call_out in call_out hash table 0xfd3240. [Thread swap, Pike_interpreter.thread_state=0xeaf730] /usr/local/pike/8.1.0/lib/master.pike:5374:(3046): global <private if direct>(16,1) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5374:(3206): local->x(2,0) 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5374:(3236): - 23, 1 /usr/local/pike/8.1.0/lib/master.pike:5374:(3352): push 0 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5374:(3414): < 23, 1 /usr/local/pike/8.1.0/lib/master.pike:5374:(3540): return 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5115): fill_stack(1,1) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5204): mark_at(1) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5271): pop to mark 21, 2 /usr/local/pike/8.1.0/lib/master.pike:5376:(5364): init_frame(1,1) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5420): local(0) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5493): call builtin 1(0) 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5557): &&(+5) 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5599): global <private if direct>(0,0) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5745): local->x(1,0) 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5775): - 23, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5876): ||(+3) 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(5918): global <private if direct>(16,1) 21, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(6078): local->x(2,0) 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(6108): - 23, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(6224): push 0 22, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(6286): == 23, 1 /usr/local/pike/8.1.0/lib/master.pike:5376:(6412): return 22, 1 /usr/local/pike/8.1.0/lib/master.pike:3578:(276078): (Q) branch if zero(+0) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3589:(276757): synch mark 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3582:(276813): synch mark 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3582:(276885): local->x(165,11) 18, 3 /usr/local/pike/8.1.0/lib/master.pike:3582:(276915): call builtin 1(90) 19, 3 /usr/local/pike/8.1.0/lib/master.pike:3582:(276982): call builtin 1(91) 19, 3 /usr/local/pike/8.1.0/lib/master.pike:3582:(277049): assign local and pop(12) 19, 3 /usr/local/pike/8.1.0/lib/master.pike:3582:(277155): pop synch mark 18, 3 /usr/local/pike/8.1.0/lib/master.pike:3584:(277174): branch if !local(12) 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3584:(277280): constant(92) 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3584:(277377): local(12) 19, 2 /usr/local/pike/8.1.0/lib/master.pike:3584:(277460): <= 20, 2 /usr/local/pike/8.1.0/lib/master.pike:3584:(277538): <= 20, 2 /usr/local/pike/8.1.0/lib/master.pike:3584:(277560): (Q) branch if zero(+0) 19, 2 /usr/local/pike/8.1.0/lib/master.pike:3588:(278131): synch mark 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3588:(278198): mark 18, 3 /usr/local/pike/8.1.0/lib/master.pike:3588:(278247): local(11) 18, 4 /usr/local/pike/8.1.0/lib/master.pike:3588:(278330): sizeof local(1) 19, 4 /usr/local/pike/8.1.0/lib/master.pike:3588:(278438): local(1) 20, 4 /usr/local/pike/8.1.0/lib/master.pike:3588:(278535): call other(165) 21, 4 /home/srb/bin/sql.pike:69:(12371): fill_stack(2,1) 21, 3 /home/srb/bin/sql.pike:69:(12460): mark_at(2) 21, 3 /home/srb/bin/sql.pike:69:(12527): pop to mark 21, 4 /home/srb/bin/sql.pike:69:(12620): init_frame(2,2) 21, 3 /home/srb/bin/sql.pike:69:(12676): synch mark 21, 3 /home/srb/bin/sql.pike:69:(12725): local function(6) 21, 4 /home/srb/bin/sql.pike:69:(12808): constant(7) 22, 4 /home/srb/bin/sql.pike:69:(12925): apply N(8,2) 23, 4 /home/srb/bin/sql.pike:69:(12959): pop 22, 4 /home/srb/bin/sql.pike:69:(13035): pop synch mark 21, 4 /home/srb/bin/sql.pike:70:(13065): synch mark 21, 3 /home/srb/bin/sql.pike:70:(13121): local function(6) 21, 4 /home/srb/bin/sql.pike:70:(13204): constant(9) 22, 4 /home/srb/bin/sql.pike:70:(13321): apply N(8,2) 23, 4 /home/srb/bin/sql.pike:70:(13355): pop 22, 4 /home/srb/bin/sql.pike:70:(13431): pop synch mark 21, 4 /home/srb/bin/sql.pike:71:(13461): push -1 21, 3 /home/srb/bin/sql.pike:72:(13523): return 22, 3 /usr/local/pike/8.1.0/lib/master.pike:3588:(278571): assign local and pop(10) 19, 3 /usr/local/pike/8.1.0/lib/master.pike:3588:(278677): pop synch mark 18, 3 /usr/local/pike/8.1.0/lib/master.pike:3589:(278722): pop synch mark 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3590:(278767): exit catch 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3590:(278786): branch(+0) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3590:(278865): assign local and pop(11) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3590:(278971): pop synch mark 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3592:(279001): synch mark 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3592:(279057): local(3) 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3592:(279137): call builtin 1(83) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3592:(279204): assign local and pop(3) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3592:(279307): pop synch mark 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3593:(279326): branch if !local(11) 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3597:(279852): local(10) 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3597:(279938): call builtin 1(81) 19, 0 /usr/local/pike/8.1.0/lib/master.pike:3597:(279994): branch if not zero(+0) 19, 0 /usr/local/pike/8.1.0/lib/master.pike:3600:(280578): local(10) 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3600:(280664): push 0 19, 0 /usr/local/pike/8.1.0/lib/master.pike:3600:(280723): >= 20, 0 /usr/local/pike/8.1.0/lib/master.pike:3600:(280823): (Q) branch if zero(+0) 19, 0 /usr/local/pike/8.1.0/lib/master.pike:3601:(281129): synch mark 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3601:(281185): push 1 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3601:(281244): assign private global and pop(496) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3601:(281380): pop synch mark 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3604:(281410): synch mark 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3604:(281466): local(3) 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3604:(281546): call builtin 1(83) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3604:(281613): assign local and pop(3) 19, 1 /usr/local/pike/8.1.0/lib/master.pike:3604:(281716): pop synch mark 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3605:(281746): synch mark 18, 0 /usr/local/pike/8.1.0/lib/master.pike:3611:(281817): synch mark 18, 1 /usr/local/pike/8.1.0/lib/master.pike:3611:(281880): catch(+1) 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3609:(281958): synch mark 18, 2 /usr/local/pike/8.1.0/lib/master.pike:3610:(282029): synch mark 18, 3 /usr/local/pike/8.1.0/lib/master.pike:3610:(282096): mark 18, 4 /usr/local/pike/8.1.0/lib/master.pike:3610:(282145): global(9) 18, 5 /usr/local/pike/8.1.0/lib/master.pike:3610:(282239): string index(62) 19, 5 /usr/local/pike/8.1.0/lib/master.pike:3610:(282269): constant(93) 19, 5 /usr/local/pike/8.1.0/lib/master.pike:3610:(282363): call function & pop 20, 5 Free call_out in call_out hash table 0xfd3240. /var/src/roxen/gpike/src/interpret_functions.h:1604: Fatal error: Mark sp diff in catch context pop. Aborted ===================================================================== Higher -d numbers give different results, I didn't want to list them all.
Any words of advice, prayers, patches, condolences or insights are appreciated.