philip@cel.cummins.com (Philip D. Pokorny) (06/26/91)
Since dogmatix.luftfahrt.uni-stuttgart.de!schmid wrote asking about more information on how to kill processes... To do this you might have to read and understand the 68000 Assembler instructions... Set DDE to display the assembly code and then look for a compare of an immediate value like 180003 against an address register indirect refrence. That indirect reference is to the status variable return value. For example: $ dde -attach 19352 Initializing image "//pilgrim/lib/shlib"... Stopped at: ec2_$wait_slow_io line 184 (0E628958) dde> tb `main(12): Stopped at: ec2_$wait_slow_io line 184 (0E628958) `main(11): Called from: inpad_$get line 188 (0E66133E) `main(10): Called from: stream_$get_rec line 151 (0E675EE4) `main(9): Called from: \\sh_input\129 (0E839456) `main(8): Called from: \\yylook\2067 (0E83EA9C) `main(7): Called from: \\yylex\1229 (0E83DFF6) `main(6): Called from: \\yyparse\353+1 (0E83EFAE) `main(5): Called from: \\doparse\1967 `main(4): Called from: \\sh_parse\262 `main(3): Called from: \\sh_$c_listener\222 (0E834B10) `main(2): Called from: \\sh_$c_cmd\398 (0E83510E) `main: Called from: \\sh_$main\44 (0E83C3F2) dde> prop disp -asm *** The source window shows the current execution address as: LEA.l (10.w,a7),a7 CMPI,l #180003,(a2) dde> print -lang asm_m68k (a2).l 0E5CF194: 00180003 The 180003 status code is 'asynchronous fault occurred while waiting (OS/level 2 eventcount manager)' which is what keeps those programs hung... Any fault you send them gets trapped at the lowest level... This is where DDE comes in handy because you can change the status set "by the OS" to 220009 or something else... dde> set (a2).l = 220009 dde> print (a2).l 0E5CF194: 00220009 dde> free dde> quit Your program should now die as if some unexpected error occured while waiting for a file read or whatever (The trace back (tb) should help you locate the problem.) I hope this clears up my previous comments... Sincerely, Philip D. Pokorny philip@cel.cummins.com :)