[comp.sys.apollo] More info on killing process with DDE

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
:)