Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Keith Alcock
Sorry for the repetition here, but News.CIS.DFN.DE seems not to have
this thread anymore or else Netscape just can't be convinced to display
it.  As usual, I spoke too soon about things working.

Getting the MIDI configuration right and/or turning off the sound made
when windows open and close did seem to help, but there also seems to be
a problem related to the window manager I use and/or clicking the mouse
on other windows while Dolphin is stripping.  Someone else mentioned the
second problem and it seems to be related to mine.

In the method below, the line

  progClass allInstances do: [:each | each exit].

takes care of removing the progress window from the screen.  Shortly
thereafter, another window/canvas is opened with the "Please wait..."
message.  Since the progress window is the last open window (at least as
far as my window manager is concerned), the manager (prompted by Windows
perhaps) looks for another window to make active and in most cases
switches screens to show that window.  Dolphin doesn't seem to like this
and crashes.  This screen switching or something similar might also be
caused by clicking the mouse on another window as a different user
explained.

The work-around for me is to have other applications running in the same
screen that will get the focus when there are temporarily no more
Dolphin windows.  This prevents the screen switching from happening.  So
far, this work-around has avoided the problem.

Since it's easier to change Dolphin than change the way I work, I tried
moving the canvas message to before the progClasses exit, but that
doesn't help.  A canvas probably isn't something that can get focus.  I
suspect that if a non-modal dialog were shown temporarily it might work,
but that would change some of the stripping strategy.

If anyone can figure out how to make this method impervious to mouse
clicks or screen changes, please let me know.

Thanks.

Keith Alcock



ImageStripper>>destroyAndRemoveProgressNotifying: notifier
 "Private - Destroy the progress view and remove its class if possible."

 self notify: notifier heading: 'Closing progress dialog for final
stripping cycle'.

 [ | progClass canvas |
  progClass := Smalltalk at: #ImageStripperProgress.
  progClass allInstances do: [:each | each exit].
  SessionManager inputState pumpMessages; processDeferredActions.
  "We have to turn the notifier into a DeafObject"
  progClass allInstances do: [:each | each become: DeafObject basicNew].

  self removeClass: progClass notifying: notifier.

  "Now write a message over the desktop to indicate the the strip is not
quite complete"
  (canvas := View desktop canvas)
   font: (Font name: 'Arial' pointSize: 12) beBold;
   backcolor: Color blue;
   setTextColor: Color white;
   setTextAlign: ##(TA_CENTER|TA_BASELINE);
   text: 'Please wait while Dolphin Lagoon terminates' at: (canvas
extent // 2).
  canvas free.
  canvas := nil.

  SessionManager current isConsoleApplication ifTrue: [
   self stripForConsoleApplicationNotifying: notifier].

  "Ensure RichText converter is not hanging around unecessarily"
  Smalltalk at: #RichText ifPresent: [:rt | rt uninitialize].
  SessionManager inputState purgeDeadWindows.
 ] on: Error do: [:e |
  self notify: notifier status: 'Error (see crash dump): ', e
description.
  VMLibrary default crashDump: e description].

 self collectGarbage.
 self finishedWithAll: #(stripForConsoleApplicationNotifying:
destroyAndRemoveProgressNotifying:)






--------------------------------------------------------------------------------------------

Sorry for the monologue here, but in case this information helps anyone
else,
here's what happened.

Installing IE 5.5 didn't help.

I finally noticed winmm!midiOutGetNumDevs in the dump below and recalled

someone else having problems because of midi configuration.  I think
that when
the ImageStripperProgress view closing was causing a sound to be played
that
was causing problems.  Wouldn't have noticed the sound and crash being
simultaneous with the speakers off.  I fiddled with the midi
configuration and
it started to work!  In the meantime the configuration has been reset to
what
it was previously, but it still works.  Go figure.

There was still a problem with KernelLibrary not understanding
createDirectory:lpSecurityAttributes:.  The problem there was that I had
loaded
in an older package providing directory support that supplied the same
function.  The package manager probably stripped it as it removed the
unnecessary directory package, but still wanted to use it in the
KernelLibrary.

Now I'll have to check whether that chunk file browser can understand
chunks of
type conditionalMethodsFor:  ;-)

Thanks for reading.

Keith Alcock


Keith Alcock wrote:

> Anyone,
>
> The problem seems to be related to this line in
> ImageStripper>>destroyAndRemoveProgressNotifying:
>
>      progClass allInstances do: [:each | each exit ].
>
> This is used to close the ImageStripperProgress view associated with
the
> ImageStripper.  It works fine in a workspace.  If I replace it with
>
>      UserLibrary default sendMessage: (each view) asParameter msg:
WM_CLOSE
> wParam: 0 lParam: 0.
>
> Dolphin still crashes with Dr. Watson information like that below and
> nothing in the error file at all.
>
> I wouldn't doubt that this is a Windows problem, but then someone else

> should be experiencing it too.
>
> Dolphin is great, but Windows is like an Achilles heel.
>
> Keith Alcock
>
> Keith Alcock wrote:
>
> > I'm testing out the ADK on Dolphin 4 both with and without patch 1
under
> > Windows 2000.  Most of the time Dolphin crashes just after entering
> >
> >     Closing progress dialog for final stripping cycle
> >
> > into the htm log file, sometimes it is before that (although some
file
> > buffering might explain the difference).  The executable file is
always

> > empty.  Last time an error file was produced with this content:
> >
> > Application exception occurred:
> >         App:  (pid=496)
> >         When: 1/12/2001 @ 15:56:02.445
> >         Exception number: c0000005 (access violation)
> >
> > *----> System Information <----*
> >         Number of Processors: 1
> >         Processor Type: x86 Family 6 Model 7 Stepping 3
> >         Windows 2000 Version: 5.0
> >         Current Build: 2195
> >         Service Pack: None
> >         Current Type: Uniprocessor Free
> >
> > *----> Task List <----*
> >    0 Idle.exe
> >    8 System.exe
> >  140 smss.exe
> >  164 csrss.exe
> >  184 winlogon.exe
> >  212 services.exe
> >  224 lsass.exe
> >  388 svchost.exe
> >  420 SPOOLSV.exe
> >  492 svchost.exe
> >  516 MGABG.exe
> >  552 regsvc.exe
> >  580 mstask.exe
> >  616 winmgmt.exe
> >  444 explorer.exe
> >  852 internat.exe
> >  312 Expanse.exe
> >  876 FINDFAST.exe
> >  940 OSA.exe
> >  824 csrcssrv.exe
> >  676 GPVersion.exe
> >  972 cw32.exe
> >  472 Dolphin.exe
> >  496 Dolphin.exe
> >  760 drwtsn32.exe
> >    0 _Total.exe
> >
> > (00400000 - 0040A000)
> > (77F80000 - 77FF9000)
> > (77E80000 - 77F36000)
> > (77A50000 - 77B45000)
> > (77D40000 - 77DAF000)
> > (77DB0000 - 77E0A000)
> > (77F40000 - 77F7C000)
> > (77E10000 - 77E75000)
> > (78000000 - 78046000)
> > (6E420000 - 6E426000)
> > (75E60000 - 75E7A000)
> > (10000000 - 10008000)
> > (77CC0000 - 77D40000)
> > (779B0000 - 77A45000)
> > (02770000 - 027A4000)
> > (77570000 - 775A0000)
> > (77820000 - 77827000)
> > (759B0000 - 759B6000)
> > (780A0000 - 780B2000)
> > (77B50000 - 77BDA000)
> > (76B20000 - 76B25000)
> > (772B0000 - 7731C000)
> > (77C70000 - 77CBA000)
> > (76B90000 - 76BFE000)
> > (749A0000 - 749C6000)
> > (75D50000 - 75DD2000)
> > (09930000 - 09969000)
> > (77560000 - 77569000)
> > (77400000 - 77408000)
> > (77410000 - 77423000)
> > (0B320000 - 0B333000)
> >
> > State Dump for Thread Id 0x41c
> >
> > eax=00c0fed8 ebx=00000000 ecx=00c0ffb0 edx=00000000 esi=77f8a117
> > edi=0000004c
> > eip=77f8a122 esp=00c0fedc ebp=00c0ff00 iopl=0         nv up ei pl zr
na

> > po nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000246
> >
> > function: ZwWaitForSingleObject
> >         77f8a117 b8ea000000       mov     eax,0xea
> >         77f8a11c 8d542404         lea     edx,[esp+0x4]
> > ss:0179d4b3=????????
> >         77f8a120 cd2e             int     2e
> >         77f8a122 c20c00           ret     0xc
> >         77f8a125 56               push    esi
> >         77f8a126 8b742408         mov     esi,[esp+0x8]
> > ss:0179d4b3=????????
> >         77f8a12a 56               push    esi
> >         77f8a12b e8fab9ffff       call    RtlValidSid (77f85b2a)
> >         77f8a130 3c01             cmp     al,0x1
> >         77f8a132 0f85949a0100     jne
> > RtlCopySidAndAttributesArray+0x8b (77fa3bcc)
> >         77f8a138 807e0200         cmp     byte ptr [esi+0x2],0x0
> > ds:78b176ed=??
> >         77f8a13c 0f85949a0100     jne
> > RtlCopySidAndAttributesArray+0x95 (77fa3bd6)
> >         77f8a142 807e0300         cmp     byte ptr [esi+0x3],0x0
> > ds:78b176ed=??
> >         77f8a146 0f858a9a0100     jne
> > RtlCopySidAndAttributesArray+0x95 (77fa3bd6)
> >         77f8a14c 6a0a             push    0xa
> >
> > *----> Stack Back Trace <----*
> >
> > FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
> > 00C0FF00 77E88787 0000004C FFFFFFFF 00000000 0040202C
> > ntdll!ZwWaitForSingleObject
> > 00C0FF24 004024CA 00400000 00000000 00C1299D FFFFFFFF
> > kernel32!WaitForSingleObject
> > 00C0FFC0 77E87903 0006D1EA 0006D3CC 7FFDF000 0006D160 !<nosymbols>
> > 00C0FFF0 00000000 00402396 00000000 000000C8 00000100
> > kernel32!SetUnhandledExceptionFilter
> >
> > *----> Raw Stack Dump <----*
> > 00c0fedc  eb e8 e9 77 4c 00 00 00 - 00 00 00 00 00 00 00 00
> > ...wL...........
> > 00c0feec  4c 00 00 00 9d 29 c1 00 - 00 00 00 00 b0 ff c0 00
> > L....)..........
> > 00c0fefc  b0 ff c0 00 24 ff c0 00 - 87 87 e8 77 4c 00 00 00
> > ....$......wL...
> > 00c0ff0c  ff ff ff ff 00 00 00 00 - 2c 20 40 00 4c 00 00 00
........,

> > @.L...
> > 00c0ff1c  ff ff ff ff ea d1 06 00 - c0 ff c0 00 ca 24 40 00
> > .............$@.
> > 00c0ff2c  00 00 40 00 00 00 00 00 - 9d 29 c1 00 ff ff ff ff
> > ..@......)......
> > 00c0ff3c  ea d1 06 00 cc d3 06 00 - 00 f0 fd 7f 00 2f 06 80
> > ............./..
> > 00c0ff4c  9d 29 c1 00 f0 37 21 01 - 00 00 00 00 54 1c 71 bd
> > .)...7!.....T.q.
> > 00c0ff5c  d0 29 21 01 01 00 00 00 - 44 00 00 00 80 48 c1 00
> > .)!.....D....H..
> > 00c0ff6c  90 48 c1 00 a8 48 c1 00 - 00 00 00 00 00 00 00 00
> > .H...H..........
> > 00c0ff7c  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ................
> > 00c0ff8c  00 00 00 00 01 0c 00 00 - 01 00 00 00 00 00 00 00
> > ................
> > 00c0ff9c  00 00 00 00 01 00 01 00 - 00 00 00 00 3c ff c0 00
> > ............<...
> > 00c0ffac  00 00 00 00 e0 ff c0 00 - 90 23 40 00 b8 30 40 00
> > .........#@..0@.
> > 00c0ffbc  00 00 00 00 f0 ff c0 00 - 03 79 e8 77 ea d1 06 00
> > .........y.w....
> > 00c0ffcc  cc d3 06 00 00 f0 fd 7f - 60 d1 06 00 c8 ff c0 00
> > ........`.......
> > 00c0ffdc  60 d1 06 00 ff ff ff ff - fd 13 ea 77 08 79 e8 77
> > `..........w.y.w
> > 00c0ffec  00 00 00 00 00 00 00 00 - 00 00 00 00 96 23 40 00
> > .............#@.
> > 00c0fffc  00 00 00 00 c8 00 00 00 - 00 01 00 00 ff ee ff ee
> > ................
> > 00c1000c  02 00 00 00 00 00 00 00 - 00 fe 00 00 00 00 10 00
> > ................
> >
> > State Dump for Thread Id 0x3d0
> >
> > eax=00005580 ebx=0b45037c ecx=10010d74 edx=100171f4 esi=0b4503a0
> > edi=08a904e6
> > eip=027815ea esp=01a2fe04 ebp=01a2fe38 iopl=0         nv up ei pl zr
na
> > po nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000246
> >
> > function: GenericCallback
> >         027815c8 eb0e             jmp     DllUnregisterServer+0x301f

> > (0278a0d8)
> >         027815ca 8b0d00a27902     mov     ecx,[0279a200]
> > ds:0279a200=10010ccc
> >         027815d0 eb06             jmp     HashBytes+0x533 (027843d8)

> >         027815d2 2e8bc0           mov     eax,cs:eax
> >         027815d5 2e8bc0           mov     eax,cs:eax
> >         027815d8 8bc1             mov     eax,ecx
> >         027815da 33c2             xor     eax,edx
> >         027815dc 25fc1f0000       and     eax,0x1ffc
> >         027815e1 8d0440           lea     eax,[eax+eax*2]
> > ds:00005580=????????
> >         027815e4 399028407902     cmp     [eax+0x2794028],edx
> > ds:027995a8=100171f4
> >         027815ea 754c             jnz     HashBytes+0x1093
(02784f38)
> >         027815ec 39882c407902     cmp     [eax+0x279402c],ecx
> > ds:027995ac=10010d74
> >         027815f2 8b8030407902     mov     eax,[eax+0x2794030]
> > ds:027995b0=100171e8
> >         027815f8 753e             jnz     DllUnregisterServer+0x307f

> > (0278a138)
> >         027815fa 8b08             mov     ecx,[eax]
> > ds:00005580=????????
> >         027815fc a354a07902       mov     [0279a054],eax
> > ds:0279a054=1002458c
> >         02781601 33c0             xor     eax,eax
> >         02781603 5a               pop     edx
> >         02781604 8a4107           mov     al,[ecx+0x7]
> > ds:10b9e34a=??
> >         02781607 ff148540277902
> > ds:00005580=????????
> >                               call dword ptr [CompileForEval+0x63e1
> > (02792740)+eax*4]
> >         0278160e 85c0             test    eax,eax
> >         02781610 740c             jz      HashBytes+0xa79 (0278491e)

> >
> > *----> Stack Back Trace <----*
> >
> > FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
> > 01A2FE38 02772071 02792AF9 004040A8 0279A394 004040A8
!GenericCallback
> > 01A2FE74 0278C8D2 00000000 004040A8 0279A394 00000000 !<nosymbols>
> > 01A2FEC4 0278613A 02770000 00000000 02792AF8 00000001
!CompileForEval

> > 01A2FF08 004022D4 01216494 00400000 00000000 00C1299D !HashBytes
> > 01A2FF74 00402197 004040A8 01213838 7800248D 004040A8 !<nosymbols>
> > 01A2FFB4 77E92CA8 01213838 00000000 00000000 01213838 !<nosymbols>
> > 01A2FFEC 00000000 78002432 01213838 00000000 6E420000
> > kernel32!CreateFileA
> >
> > *----> Raw Stack Dump <----*
> > 01a2fe04  00 00 00 00 f9 2a 79 02 - 00 00 00 00 94 a3 79 02
> > .....*y.......y.
> > 01a2fe14  ac 9f a6 02 05 cf 78 02 - 00 00 00 00 08 fe a2 01
> > ......x.........
> > 01a2fe24  ac 9f a6 02 64 fe a2 01 - c0 52 78 02 68 e5 78 02
> > ....d....Rx.h.x.
> > 01a2fe34  00 00 00 00 74 fe a2 01 - 71 20 77 02 f9 2a 79 02
....t...q

> > w..*y.
> > 01a2fe44  a8 40 40 00 94 a3 79 02 - a8 40 40 00 c4 fe a2 01
> > .@@...y..@@.....
> > 01a2fe54  04 00 00 00 58 c9 78 02 - 40 fe a2 01 c4 fe a2 01
> > ....X.x.@.......
> > 01a2fe64  b4 fe a2 01 c0 52 78 02 - e8 e4 78 02 00 00 00 00
> > .....Rx...x.....
> > 01a2fe74  c4 fe a2 01 d2 c8 78 02 - 00 00 00 00 a8 40 40 00
> > ......x......@@.
> > 01a2fe84  94 a3 79 02 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ..y.............
> > 01a2fe94  00 00 00 00 fe 0c e9 77 - ff ff ff ff 6d c8 78 02
> > .......w....m.x.
> > 01a2fea4  00 00 00 00 ec fe a2 01 - 7c fe a2 01 c8 fe a2 01
> > ........|.......
> > 01a2feb4  64 ff a2 01 c0 52 78 02 - d8 e4 78 02 00 00 00 00
> > d....Rx...x.....
> > 01a2fec4  08 ff a2 01 3a 61 78 02 - 00 00 77 02 00 00 00 00
> > ....:ax...w.....
> > 01a2fed4  f8 2a 79 02 01 00 00 00 - 00 00 00 00 00 00 00 00
> > .*y.............
> > 01a2fee4  a8 40 40 00 78 40 40 00 - 00 c0 78 02 00 00 77 02
> > .@@.x@@...x...w.
> > 01a2fef4  80 00 00 00 00 20 00 00 - 00 10 00 00 10 00 00 00  .....
> > ..........
> > 01a2ff04  00 00 00 01 74 ff a2 01 - d4 22 40 00 94 64 21 01
> > ....t...."@..d!.
> > 01a2ff14  00 00 40 00 00 00 00 00 - 9d 29 c1 00 01 00 00 00
> > ..@......)......
> > 01a2ff24  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ................
> > 01a2ff34  38 38 21 01 38 38 21 01 - 0d 90 a7 77 00 00 00 00
> > 88!.88!....w....
> >
> > State Dump for Thread Id 0x318
> >
> > eax=77d4b759 ebx=00c1db80 ecx=00c1cc54 edx=00000000 esi=00c1da38
> > edi=00000100
> > eip=77f82eec esp=0276fe28 ebp=0276ff74 iopl=0         nv up ei pl nz
na

> > pe nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000202
> >
> > function: ZwReplyWaitReceivePortEx
> >         77f82ee1 b8ac000000       mov     eax,0xac
> >         77f82ee6 8d542404         lea     edx,[esp+0x4]
> > ss:032fd3ff=????????
> >         77f82eea cd2e             int     2e
> >         77f82eec c21400           ret     0x14
> >
> > *----> Stack Back Trace <----*
> >
> > FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
> > 0276FF74 77D4B407 77D4B7BF 00C1DA38 00000000 40C1D554
> > ntdll!ZwReplyWaitReceivePortEx
> > 0276FFA8 77D4B771 00C1DA10 0276FFEC 77E92CA8 00C1DB80
> > rpcrt4!RpcBindingSetOption
> > 0276FFB4 77E92CA8 00C1DB80 00000000 40C1D554 00C1DB80
> > rpcrt4!RpcBindingSetOption
> > 0276FFEC 00000000 77D4B759 00C1DB80 00000000 00905A4D
> > kernel32!CreateFileA
> >
> > *----> Raw Stack Dump <----*
> > 0276fe28  94 b5 d4 77 dc 00 00 00 - 54 ff 76 02 00 00 00 00
> > ...w....T.v.....
> > 0276fe38  68 00 c2 00 58 ff 76 02 - d8 b5 c1 00 10 da c1 00
> > h...X.v.........
> > 0276fe48  80 db c1 00 c8 5f 05 85 - 36 a1 87 47 15 00 00 00
> > ....._..6..G....
> > 0276fe58  97 2d 83 a4 15 00 00 00 - 02 02 00 00 00 00 00 a4
> > .-..............
> > 0276fe68  70 1b 71 bd a9 54 46 80 - 01 80 ba a7 30 00 00 00
> > p.q..TF.....0...
> > 0276fe78  b1 8e 28 ef 46 e0 47 ed - a2 34 31 d2 9a 56 bd 3c
> > ..(.F.G..41..V.<
> > 0276fe88  3f 07 91 ec 01 00 00 00 - 00 00 00 00 43 2f 06 80
> > ?...........C/..
> > 0276fe98  08 c0 3f e2 f0 1c 71 bd - 83 a7 f6 bf e8 73 7f 84
> > ..?...q......s..
> > 0276fea8  a8 73 7f 84 01 00 00 00 - cc 1b 71 bd 00 09 34 82
> > .s........q...4.
> > 0276feb8  40 00 00 00 c0 09 34 82 - 04 00 00 00 34 1d 71 bd
> > @.....4.....4.q.
> > 0276fec8  54 30 00 c0 db 39 00 00 - c8 5f 05 85 40 00 00 00
> > T0...9..._..@...
> > 0276fed8  00 09 34 82 00 00 00 00 - 01 00 00 00 80 00 00 00
> > ..4.............
> > 0276fee8  a8 5e cf 85 54 30 00 c0 - 44 1d 71 bd 5f 6f 4b 80
> > .^..T0..D.q._oK.
> > 0276fef8  0c 00 30 c0 02 02 00 00 - a6 6f 4b 80 64 1d 71 bd
> > ..0......oK.d.q.
> > 0276ff08  a0 fc a2 01 fb 6b 4b 80 - e0 29 50 c0 18 01 00 00
> > .....kK..)P.....
> > 0276ff18  15 0c 00 00 18 0c 00 00 - 18 01 00 00 01 00 00 00
> > ................
> > 0276ff28  ff ff ff ff 00 09 34 82 - 20 30 dc 84 00 00 00 00
......4.
> > 0......
> > 0276ff38  8c 30 dc 84 20 30 dc 84 - b0 31 dc 84 1c d6 42 80  .0..
> > 0...1....B.
> > 0276ff48  00 2f 06 80 80 31 dc 84 - 20 30 dc 84 70 1c 71 bd
./...1..
> > 0..p.q.
> > 0276ff58  00 a2 2f 4d ff ff ff ff - 50 fe 76 02 ff ff ff ff
> > ../M....P.v.....
> >
> > State Dump for Thread Id 0x2c4
> >
> > eax=77562bdf ebx=00000002 ecx=00000000 edx=00000000 esi=77f87e6c
> > edi=00000002
> > eip=77f87e77 esp=0a1bff24 ebp=0a1bff70 iopl=0         nv up ei pl zr
na

> > po nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000246
> >
> > function: ZwWaitForMultipleObjects
> >         77f87e6c b8e9000000       mov     eax,0xe9
> >         77f87e71 8d542404         lea     edx,[esp+0x4]
> > ss:0ad4d4fb=????????
> >         77f87e75 cd2e             int     2e
> >         77f87e77 c21400           ret     0x14
> >         77f87e7a 668b08           mov     cx,[eax]
> > ds:77562bdf=8b55
> >         77f87e7d 40               inc     eax
> >         77f87e7e 40               inc     eax
> >         77f87e7f 8945a4           mov     [ebp+0xa4],eax
> > ss:0ad4d546=????????
> >         77f87e82 6685c9           test    cx,cx
> >         77f87e85 75f3             jnz
> > RtlExpandEnvironmentStrings_U+0x26 (77f8e57a)
> >         77f87e87 663930           cmp     [eax],si
> > ds:77562bdf=8b55
> >         77f87e8a 75ee             jnz     ZwFsControlFile+0x54
> > (77f8bf7a)
> >         77f87e8c 40               inc     eax
> >         77f87e8d 40               inc     eax
> >         77f87e8e 8945a4           mov     [ebp+0xa4],eax
> > ss:0ad4d546=????????
> >
> > *----> Stack Back Trace <----*
> >
> > FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
> > 0A1BFF70 77E9E68A 0A1BFF48 00000001 00000000 00000000
> > ntdll!ZwWaitForMultipleObjects
> > 0A1BFFB4 77E92CA8 00000000 7FFDDBF8 00000000 00000000
> > kernel32!WaitForMultipleObjects
> > 0A1BFFEC 00000000 77562BDF 00000000 00000000 0B200CB0
> > kernel32!CreateFileA
> >
> > *----> Raw Stack Dump <----*
> > 0a1bff24  b2 79 e8 77 02 00 00 00 - 48 ff 1b 0a 01 00 00 00
> > .y.w....H.......
> > 0a1bff34  00 00 00 00 00 00 00 00 - f8 db fd 7f 00 00 00 00
> > ................
> > 0a1bff44  00 00 00 00 6c 01 00 00 - 68 01 00 00 80 d2 1d 82
> > ....l...h.......
> > 0a1bff54  00 00 00 00 a8 70 46 80 - 00 00 00 00 a0 e1 f4 e1
> > .....pF.........
> > 0a1bff64  00 00 00 00 ac 7c 4e f7 - 00 00 00 00 b4 ff 1b 0a
> > .....|N.........
> > 0a1bff74  8a e6 e9 77 48 ff 1b 0a - 01 00 00 00 00 00 00 00
> > ...wH...........
> > 0a1bff84  00 00 00 00 00 00 00 00 - 1f 2c 56 77 02 00 00 00
> > .........,Vw....
> > 0a1bff94  a4 ff 1b 0a 00 00 00 00 - ff ff ff ff 00 00 00 00
> > ................
> > 0a1bffa4  6c 01 00 00 68 01 00 00 - 00 00 00 00 2b 0e 43 80
> > l...h.......+.C.
> > 0a1bffb4  ec ff 1b 0a a8 2c e9 77 - 00 00 00 00 f8 db fd 7f
> > .....,.w........
> > 0a1bffc4  00 00 00 00 00 00 00 00 - 00 b0 fd 7f 00 00 00 00
> > ................
> > 0a1bffd4  c0 ff 1b 0a 00 00 00 00 - ff ff ff ff fd 13 ea 77
> > ...............w
> > 0a1bffe4  08 c0 e9 77 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ...w............
> > 0a1bfff4  df 2b 56 77 00 00 00 00 - 00 00 00 00 b0 0c 20 0b
> > .+Vw.......... .
> > 0a1c0004  9f 00 13 00 10 00 90 01 - 17 00 b0 01 ff ff ff 00
> > ................
> > 0a1c0014  ff ff ff 00 00 00 00 00 - 00 00 00 00 ff ff ff 00
> > ................
> > 0a1c0024  ff ff ff 00 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ................
> > 0a1c0034  01 00 00 00 0d 02 01 01 - 00 00 00 00 00 00 00 00
> > ................
> > 0a1c0044  00 00 00 00 00 00 00 00 - 02 00 00 00 01 00 00 00
> > ................
> > 0a1c0054  01 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ................
> >
> > State Dump for Thread Id 0x250
> >
> > eax=0000243b ebx=00000174 ecx=00c4de70 edx=00000000 esi=0a9cff98
> > edi=77e193fe
> > eip=77e1414f esp=0a9cff58 ebp=0a9cff78 iopl=0         nv up ei pl zr
na
> > po nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000246
> >
> > function: DispatchMessageW
> >         77e14137 90               nop
> >         77e14138 ffff             ???
> >         77e1413a ffff             ???
> >         77e1413c 7407             jz      DrawFrame+0xae4 (77e22545)

> >         77e1413e e477             in      al,77
> >         77e14140 8707             xchg    [edi],eax
> > ds:77e193fe=8bec8b55
> >         77e14142 e477             in      al,77
> >         77e14144 b89a110000       mov     eax,0x119a
> >         77e14149 8d542404         lea     edx,[esp+0x4]
> > ss:0b55d52f=????????
> >         77e1414d cd2e             int     2e
> >         77e1414f c21000           ret     0x10
> >         77e14152 55               push    ebp
> >         77e14153 8bec             mov     ebp,esp
> >         77e14155 53               push    ebx
> >         77e14156 56               push    esi
> >         77e14157 8b7508           mov     esi,[ebp+0x8]
> > ss:0b55d54e=????????
> >         77e1415a 8b450c           mov     eax,[ebp+0xc]
> > ss:0b55d54e=????????
> >         77e1415d 57               push    edi
> >         77e1415e 33ff             xor     edi,edi
> >         77e14160 0fb74e2a         movzx   ecx,word ptr [esi+0x2a]
> > ds:0b55d56f=????
> >         77e14164 81e1ff3fffff     and     ecx,0xffff3fff
> >         77e1416a 7521             jnz     UnregisterClassA+0x13f
> > (77e1c68d)
> >
> > *----> Stack Back Trace <----*
> >
> > FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
> > 0A9CFF78 77575C36 0A9CFF98 00000000 00000000 00000000
> > user32!DispatchMessageW
> > 0A9CFFB4 77E92CA8 00000174 77595428 01A2F648 00000174
> > winmm!midiOutGetNumDevs
> > 0A9CFFEC 00000000 00000000 00000000 00000000 00000000
> > kernel32!CreateFileA
> >
> > State Dump for Thread Id 0x1d0
> >
> > eax=7757927f ebx=77593780 ecx=01a2fa3c edx=00000000 esi=77593a78
> > edi=00000001
> > eip=77f87e77 esp=0b1fff4c ebp=77f8aa4c iopl=0         nv up ei ng nz
ac

> > po nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000296
> >
> > function: ZwWaitForMultipleObjects
> >         77f87e6c b8e9000000       mov     eax,0xe9
> >         77f87e71 8d542404         lea     edx,[esp+0x4]
> > ss:0bd8d523=????????
> >         77f87e75 cd2e             int     2e
> >         77f87e77 c21400           ret     0x14
> >         77f87e7a 668b08           mov     cx,[eax]
> > ds:7757927f=ec83
> >         77f87e7d 40               inc     eax
> >         77f87e7e 40               inc     eax
> >         77f87e7f 8945a4           mov     [ebp+0xa4],eax
> > ss:78b18022=????????
> >         77f87e82 6685c9           test    cx,cx
> >         77f87e85 75f3             jnz
> > RtlExpandEnvironmentStrings_U+0x26 (77f8e57a)
> >         77f87e87 663930           cmp     [eax],si
> > ds:7757927f=ec83
> >         77f87e8a 75ee             jnz     ZwFsControlFile+0x54
> > (77f8bf7a)
> >         77f87e8c 40               inc     eax
> >         77f87e8d 40               inc     eax
> >         77f87e8e 8945a4           mov     [ebp+0xa4],eax
> > ss:78b18022=????????
> >
> > *----> Stack Back Trace <----*
> >
> > FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
> > 77F8AA4C 8B000000 83042454 0F00147A 00F69585 42FF9000
> > ntdll!ZwWaitForMultipleObjects
> > 180D8B64 00000000 00000000 00000000 00000000 00000000 <nosymbols>
> >
> > *----> Raw Stack Dump <----*
> > 0b1fff4c  2f 93 57 77 01 00 00 00 - 74 ff 1f 0b 01 00 00 00
> > /.Ww....t.......
> > 0b1fff5c  01 00 00 00 00 00 00 00 - 00 00 00 00 18 15 e9 00
> > ................
> > 0b1fff6c  ec ff 1f 0b 00 00 00 00 - 94 01 00 00 9c 01 00 00
> > ................
> > 0b1fff7c  00 00 00 00 00 00 00 00 - 82 09 43 80 00 00 00 00
> > ..........C.....
> > 0b1fff8c  97 02 00 00 bb 09 43 80 - 00 09 34 82 80 0c 34 82
> > ......C...4...4.
> > 0b1fff9c  ff ff ff ff 27 0b 43 80 - 00 00 00 00 00 00 00 00
> > ....'.C.........
> > 0b1fffac  00 00 00 00 2b 0e 43 80 - ef 08 f9 77 a8 2c e9 77
> > ....+.C....w.,.w
> > 0b1fffbc  00 00 00 00 00 00 00 00 - 18 15 e9 00 00 00 00 00
> > ................
> > 0b1fffcc  00 90 fd 7f 3c fa a2 01 - c0 ff 1f 0b 3c fa a2 01
> > ....<.......<...
> > 0b1fffdc  ff ff ff ff fd 13 ea 77 - 08 c0 e9 77 00 00 00 00
> > .......w...w....
> > 0b1fffec  00 00 00 00 00 00 00 00 - 7f 92 57 77 00 00 00 00
> > ..........Ww....
> > 0b1ffffc  00 00 00 00 e0 0a 1c 0a - 9f 00 13 00 10 00 90 01
> > ................
> > 0b20000c  17 00 b0 01 ff ff ff 00 - ff ff ff 00 00 00 00 00
> > ................
> > 0b20001c  00 00 00 00 ff ff ff 00 - ff ff ff 00 00 00 00 00
> > ................
> > 0b20002c  00 00 00 00 00 00 00 00 - 01 00 00 00 0d 02 01 01
> > ................
> > 0b20003c  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
> > ................
> > 0b20004c  02 00 00 00 01 00 00 00 - 01 00 00 00 00 00 00 00
> > ................
> > 0b20005c  00 00 00 00 00 00 00 00 - 1f 00 89 01 00 00 00 00
> > ................
> > 0b20006c  ff ff ff ff ff ff ff ff - 00 00 00 00 00 00 00 00
> > ................
> > 0b20007c  00 00 00 00 00 00 00 00 - 01 00 00 00 00 00 00 00
> > ................
> >
> > State Dump for Thread Id 0x418
> >
> > eax=00000001 ebx=64d78bb0 ecx=00010101 edx=ffffffff esi=00000000
> > edi=77e1909c
> > eip=64d3bf9e esp=16c8ff50 ebp=16c8ff74 iopl=0         nv up ei pl zr
na
> > po nc
> > cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000
> > efl=00000246
> >
> > function: <nosymbols>
> >
> > I have tried both package-based deployments and those based on a
session
> > manager.  For the test described above, I just did an
> > ApplicationDeploymentWizard show, entered a file name and chose the
> > CalculatorSessionManager.
> >
> > Can anyone recognize or diagnose the problem?  Debugging it is
rather
> > difficult.  It looks like there is some problem during CreateFileA.
> >
> > Thank you.
> >
> > Keith Alcock


Reply | Threaded
Open this post in threaded view
|

Re: Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Blair McGlashan
Keith

"Keith Alcock" <[hidden email]> wrote in message
news:[hidden email]...
> ....
> Since it's easier to change Dolphin than change the way I work, I tried
> moving the canvas message to before the progClasses exit, but that
> doesn't help.  A canvas probably isn't something that can get focus.

Thats right. I should explain that the choice of drawing the final "Please
wait" message on the desktop was quite deliberate. In order to allow the
progress dialog itself, and anything in its reference net, to be stripped,
it must be closed. To see quite what a difference this makes take a look at
the HTML log file from a successful strip. If you search for the text
'Closing progress dialog for final stripping cycle', after that point you
will see details of all the classes and methods that become candidates for
stripping when the progress dialog has been cleared away. In the case of a
simple GUI app like hello world more than 80 further classes and hundreds
more methods are stripped. In the case of a console application the "silent"
stripping stage is especially important because it is only then that the GUI
support (most importantly the View hierarchy) can be stripped.

>...I
> suspect that if a non-modal dialog were shown temporarily it might work,
> but that would change some of the stripping strategy.

Yes, as I describe above it would considerably impact the stripping
effectiveness.

> If anyone can figure out how to make this method impervious to mouse
> clicks or screen changes, please let me know.

It sounds as if there is a problem in switching away from Dolphin at this
critical stage, but we've so far been unable to reproduce it here. There was
a related problem we experienced during 4.0 development, but that was
solved. Without reproducability the next best thing is a Dolphin crash dump
(not one from Dr. Watson, as the latter doesn't tell us anything about the
state of the imate at the time of the failure). Without either then it will
be difficult to fix. We can surmise that some Windows message is being sent
to Dolphin that it isn't prepared to handle at that stage in the stripping
process, perhaps because the window subsystem is partially shut down, but
that's just a guess.

Regarding your workaround, can your screen manager not be configured to
remain on the current screen regardless of whether there any any windows
open on it? It might be that it can't because Windows will try to activate
another top-level Window, which would presumably initiate a screen swap,
something that personally I would find rather annoying.

Looking forward to that crash dump
(http://www.object-arts.com/wiki/html/Dolphin/CrashDump.htm)

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Keith Alcock
Blair,

Thanks for the background information and for the tips.  I hadn't seen the Wiki
info on the crash dump.  Unfortunately, no crash dump is ever produced.  Just to
be thorough, I crashed it both as a normal user and as an administrator and with
and without the program DebugView.exe running and also with and without the
registry settings at the default value.  The only way I could get anything was
with VMLibrary default crashDump: 'testing'.  That worked nicely.  For each real
crash the Doctor Watson version of the dump did get written, but that doesn't
help you.

The screen manager doesn't have an option to turn off the automatic switching,
but now that I finally know what is going on and can prevent the crash, I'm
satisfied.

If for some reason you want to look into it further (because of that mouse
problem or the crash dump problem), I'm running Win2K and the screen manager is
called Expanse 1.1 and can be had at
http://softseek.zdnet.com/Utilities/Taskbar_Start_Menu_and_Explorer_Enhancements/Virtual_Desktops/D_26751_index.html.

Thanks,

Keith


Blair McGlashan wrote:

> Keith
>
> "Keith Alcock" <[hidden email]> wrote in message
> news:[hidden email]...
> > ....
> > Since it's easier to change Dolphin than change the way I work, I tried
> > moving the canvas message to before the progClasses exit, but that
> > doesn't help.  A canvas probably isn't something that can get focus.
>
> Thats right. I should explain that the choice of drawing the final "Please
> wait" message on the desktop was quite deliberate. In order to allow the
> progress dialog itself, and anything in its reference net, to be stripped,
> it must be closed. To see quite what a difference this makes take a look at
> the HTML log file from a successful strip. If you search for the text
> 'Closing progress dialog for final stripping cycle', after that point you
> will see details of all the classes and methods that become candidates for
> stripping when the progress dialog has been cleared away. In the case of a
> simple GUI app like hello world more than 80 further classes and hundreds
> more methods are stripped. In the case of a console application the "silent"
> stripping stage is especially important because it is only then that the GUI
> support (most importantly the View hierarchy) can be stripped.
>
> >...I
> > suspect that if a non-modal dialog were shown temporarily it might work,
> > but that would change some of the stripping strategy.
>
> Yes, as I describe above it would considerably impact the stripping
> effectiveness.
>
> > If anyone can figure out how to make this method impervious to mouse
> > clicks or screen changes, please let me know.
>
> It sounds as if there is a problem in switching away from Dolphin at this
> critical stage, but we've so far been unable to reproduce it here. There was
> a related problem we experienced during 4.0 development, but that was
> solved. Without reproducability the next best thing is a Dolphin crash dump
> (not one from Dr. Watson, as the latter doesn't tell us anything about the
> state of the imate at the time of the failure). Without either then it will
> be difficult to fix. We can surmise that some Windows message is being sent
> to Dolphin that it isn't prepared to handle at that stage in the stripping
> process, perhaps because the window subsystem is partially shut down, but
> that's just a guess.
>
> Regarding your workaround, can your screen manager not be configured to
> remain on the current screen regardless of whether there any any windows
> open on it? It might be that it can't because Windows will try to activate
> another top-level Window, which would presumably initiate a screen swap,
> something that personally I would find rather annoying.
>
> Looking forward to that crash dump
> (http://www.object-arts.com/wiki/html/Dolphin/CrashDump.htm)
>
> Regards
>
> Blair


Reply | Threaded
Open this post in threaded view
|

Re: Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Blair McGlashan
Keith

You wrote in message news:[hidden email]...
>...
> If for some reason you want to look into it further (because of that mouse
> problem or the crash dump problem), I'm running Win2K and the screen
manager is
> called Expanse 1.1 and can be had at
>
http://softseek.zdnet.com/Utilities/Taskbar_Start_Menu_and_Explorer_Enhancem
ents/Virtual_Desktops/D_26751_index.html.

Thanks for the link, I downloaded Expanse, fired it up, and had a quick look
with a debugger. This is a most unusual problem. What is happenning is that
a foreign thread (i.e. not one started by Dolphin) is crashing as soon as
one attempts to switch the desktop. Just starting a deployment, waiting a
bit until it gets underway, and then clicking on the Expanse window to move
to another desktop will immediately cause the Windows GPF dialog to appear
(assuming you don't want Dr Watson configured to start automatically). If
you get the GPF dialog and just leave it there, the deployment will complete
successfully, because Dolphin itself is unaffected, even though the dialog
reports that Dolphin.exe has crashed. The GPF dialog can be misleading, in
that it isn't Dolphin that has crashed but one of the threads running within
it, and in this case not one of the Dolphin threads. Because it isn't a
Dolphin thread that crashes no Dolphin crash dump is produced.

You may be wondering what is going on! Well, any DLL loaded into a process
can start a thread in it. Should that thread GPF, then Windows reports that
the executable has caused an exception. Strictly speaking this isn't true,
the process started by the executable has caused an exception, not
necessarily the executable's own code. Another example is that if the
Dolphin plugin running inside Internet Explorer/Netscape crashes, then
Windows blames the browser because the Dolphin plug-in runs "in-process"
(inside the browser process that is), starting its own threads to run the
"live" image.

Now I don't know what started the offending thread. It could be a system
thread started by Windows, or it could be a thread belonging to Expanse,
since it would appear that it loads a DLL entitled hook.dll into the address
space of all processes.

I also don't know why the thread is crashing - it seems to end up in the
middle of nowhere, which is frequently an after effect of stack corruption
(basically overwritig return addresses), but one can't be sure. What I do
know is that this happens repeatably when one attempts to switch desktop
during a deployment, and I doubt it has anything to do with the intermittent
fault, reported by someone else, that occurs when using ALT+TAB to switch to
another application and back.

In summary: Either use your workaround of avoiding/preventing switches of
desktop during deployment, or avoid this particular desktop manager.

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Keith Alcock
Blair,

Thanks again for looking into it.  While I'm glad that the problem was
reproducible on another machine for once, I regret taking your time if the other
program is at fault.

I had never tried purposely clicking the mouse to get the screen change.  Sure
enough, the GPF happens immediately.  The only difference between your
observation and mine is that although I do get an exe file, it is empty.  The
stripping process does not run to completion.

Please put this one on the tab of whoever at Microsoft decided to identify the
crash as belonging to the host application instead of the application that
injected the hook.

Keith

P.S. I'm about to send a bug report, so don't start celebrating too soon :-)



Blair McGlashan wrote:

> Keith
>
> You wrote in message news:[hidden email]...
> >...
> > If for some reason you want to look into it further (because of that mouse
> > problem or the crash dump problem), I'm running Win2K and the screen
> manager is
> > called Expanse 1.1 and can be had at
> >
> http://softseek.zdnet.com/Utilities/Taskbar_Start_Menu_and_Explorer_Enhancem
> ents/Virtual_Desktops/D_26751_index.html.
>
> Thanks for the link, I downloaded Expanse, fired it up, and had a quick look
> with a debugger. This is a most unusual problem. What is happenning is that
> a foreign thread (i.e. not one started by Dolphin) is crashing as soon as
> one attempts to switch the desktop. Just starting a deployment, waiting a
> bit until it gets underway, and then clicking on the Expanse window to move
> to another desktop will immediately cause the Windows GPF dialog to appear
> (assuming you don't want Dr Watson configured to start automatically). If
> you get the GPF dialog and just leave it there, the deployment will complete
> successfully, because Dolphin itself is unaffected, even though the dialog
> reports that Dolphin.exe has crashed. The GPF dialog can be misleading, in
> that it isn't Dolphin that has crashed but one of the threads running within
> it, and in this case not one of the Dolphin threads. Because it isn't a
> Dolphin thread that crashes no Dolphin crash dump is produced.
>
> You may be wondering what is going on! Well, any DLL loaded into a process
> can start a thread in it. Should that thread GPF, then Windows reports that
> the executable has caused an exception. Strictly speaking this isn't true,
> the process started by the executable has caused an exception, not
> necessarily the executable's own code. Another example is that if the
> Dolphin plugin running inside Internet Explorer/Netscape crashes, then
> Windows blames the browser because the Dolphin plug-in runs "in-process"
> (inside the browser process that is), starting its own threads to run the
> "live" image.
>
> Now I don't know what started the offending thread. It could be a system
> thread started by Windows, or it could be a thread belonging to Expanse,
> since it would appear that it loads a DLL entitled hook.dll into the address
> space of all processes.
>
> I also don't know why the thread is crashing - it seems to end up in the
> middle of nowhere, which is frequently an after effect of stack corruption
> (basically overwritig return addresses), but one can't be sure. What I do
> know is that this happens repeatably when one attempts to switch desktop
> during a deployment, and I doubt it has anything to do with the intermittent
> fault, reported by someone else, that occurs when using ALT+TAB to switch to
> another application and back.
>
> In summary: Either use your workaround of avoiding/preventing switches of
> desktop during deployment, or avoid this particular desktop manager.
>
> Regards
>
> Blair


Reply | Threaded
Open this post in threaded view
|

Re: Doesn't work. [Previously: It works! Re: ADK/Lagoon crashes during build]

Blair McGlashan
Keith

You wrote in message news:[hidden email]...
> ...
> Thanks again for looking into it.  While I'm glad that the problem was
> reproducible on another machine for once, I regret taking your time if the
other
> program is at fault.

It still may be a bug in Dolphin, or at least something we can work around.
On the one hand it doesn't seem to happen to other applications, and doesn't
occur to Dolphin when one is not actually deploying. On the other hand it
appears to be a foreign thread that is causing the fault. We just can't be
sure at present, so it will remain on the bug system and I'll look into it a
bit more when we have completed the maintenance release.

>
> I had never tried purposely clicking the mouse to get the screen change.
Sure
> enough, the GPF happens immediately.  The only difference between your
> observation and mine is that although I do get an exe file, it is empty.
The
> stripping process does not run to completion.
>
> Please put this one on the tab of whoever at Microsoft decided to identify
the
> crash as belonging to the host application instead of the application that
> injected the hook.

I suppose the reasoning is that from a user point of view one has to point
the finger at something.

>
> P.S. I'm about to send a bug report, so don't start celebrating too soon
:-)

All genuine bug reports are welcome, especially if they come with an SUnit
test to reproduce them :-)

Regards

Blair