Voor een klant (in een ver land) hebben we niet lang geleden een bediening van een installatie geport van Win95 naar WinNT.
Het betreft een SCADA systeem dat dmv eigen ontwikkelde drivers met een bult Industrieele PC's communiceert, via Ethernet + TCP/IP.
Nu vertelt DrWatson ons dat er iets niet goed zit in de driver:
Even verder in de log:
Mijn vragen zijn:
- Is er een manier om erachter te komen of een thread-id bij een bepaald proces hoort? ( Achteraf dus
)
- Kan het zijn dat door een of andere oorzaak de stack back trace wordt vermoerd door de access violation?
- Of anders, wat kan een oorzaak van zijn van het feit dat het ding een functie wil aanroepen op een plek waar data staat?
- Is er een manier om meer info over de crash te weten te komen, zonder er met een debugger aan te gaan hangen? Ik heb de userdump ook geprobeerd te bekijken, maar DrWatson wil me niet meer info geven. ( Misschien doordat de userdump corrupt is )
- Kortom ..... help
btw Ik heb het systeem in house gesimuleerd, maar ik heb niet de beschikking over pak um beet 20 IPC's, dus dat was behelpen. Het ding wilde op mijn test-systeem echter niet platgaan. ( darnit ).
Het betreft een SCADA systeem dat dmv eigen ontwikkelde drivers met een bult Industrieele PC's communiceert, via Ethernet + TCP/IP.
Nu vertelt DrWatson ons dat er iets niet goed zit in de driver:
We hebben op dit moment geen mogelijkheid om een debugger aan het systeem te hangen, dus zal ik op een of andere manier uit de log van DrWatson wat meer info moeten halen:Application exception occurred:
App: (pid=286)
When: 5/10/2002 @ 13:7:53.779
Exception number: c0000005 (access violation)
Zoals u ziet (o.a.) PID 286 is comcon.exe. Deze dll laadt de eigenlijke comm driver, comcon.dll. ( Ik verwacht dat comcon.exe stubs bevat voor de functies die het SCADA importeert, en voor de functies die comcon.dll exporteert de aanroepen forward naar comcon.dll )*----> Task List <----*
....
500 comcon.exe
482 comcon.exe
208 comcon.exe
86 comcon.exe
286 comcon.exe
..
Even verder in de log:
Omdat er op dit moment wel een debug build draait, kan ik in de call stack zien dat hij naar een functie comcon!cache springt. Het toeval wil echter dat dit geen functie is, maar een variabele!State Dump for Thread Id 0xd4
eax=00000067 ebx=0012f8e4 ecx=000000ff edx=0000000e esi=0012ef24 edi=0012ee94
eip=5a0d1a00 esp=0012ee28 ebp=51003500 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>
*----> Stack Back Trace <----*
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0012ee24 10007a00 003d5dc0 0013cd30 000000ff 0012ef08 <nosymbols>
51003500 00000000 00000000 00000000 00000000 00000000 comcon!cache
Mijn vragen zijn:
- Is er een manier om erachter te komen of een thread-id bij een bepaald proces hoort? ( Achteraf dus
- Kan het zijn dat door een of andere oorzaak de stack back trace wordt vermoerd door de access violation?
- Of anders, wat kan een oorzaak van zijn van het feit dat het ding een functie wil aanroepen op een plek waar data staat?
- Is er een manier om meer info over de crash te weten te komen, zonder er met een debugger aan te gaan hangen? Ik heb de userdump ook geprobeerd te bekijken, maar DrWatson wil me niet meer info geven. ( Misschien doordat de userdump corrupt is )
- Kortom ..... help
btw Ik heb het systeem in house gesimuleerd, maar ik heb niet de beschikking over pak um beet 20 IPC's, dus dat was behelpen. Het ding wilde op mijn test-systeem echter niet platgaan. ( darnit ).
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.