Hello everybody.
I'm making my firt dll deployments using Dolphin 5. I'm deploying from Win 2k, and when I test the component in a win2k, it all goes well. But when I try to run regsvr32 with the dll in a Win XP, a crash occurs and the registration fails. Any ideas what am I missing (I don't usually use XP, so I can be missing some very basic things)? The dll uses shells and dialogs, so I'm using this modified SessionManager: ------------- "Filed out from Dolphin Smalltalk XP"! GUISessionManager subclass: #AXDllGUISessionManager instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' classInstanceVariableNames: ''! AXDllGUISessionManager guid: (GUID fromString: '{26EA10D0-AC6B-438E-B012-B2942FD3F062}')! AXDllGUISessionManager comment: ''! !AXDllGUISessionManager categoriesForClass!System-Support! ! !AXDllGUISessionManager methodsFor! basicTertiaryStartup "Perform fundamental tertiary system startup operations." self embeddedStartup! isDLL "Private - Answer whether the receiver is a shared library, as opposed to an application." ^true! keepAlive "We stay alive until the host process unloads us." ^self! logError: anException "Append details about the unhandled exception, anException, to the session error log. Ignored for runtime systems, but it is suggested that subclasses perform some appropriate form of error logging. Here we are using the VM's dump facility to append a short but informative log each time an error occurs, to <exe name>.ERRORS." VMLibrary default dump: anException description path: nil stackDepth: 60 walkbackDepth: 50! openConsoleStreams "Private - Open the standard console I/O streams." "Do nothing - when running as a DLL we cannot assume we have access to the console" ! unhandledException: anException "Private - The unhandled Exception, anException, occurred in the active Process. Depending on the user response and the resumability of the exception, either resume or terminate the process. Note: The exception response protocol (#resume, #pass, #outer, #exit, etc) can only be sent to an Exception inside a handler block (i.e. the second argument to BlockClosure>>on:do:)." self logError: anException. anException isResumable ifFalse: [ "Note that unlike a GUI session (which is event driven), we kill the entire session in the event of an unhandled unresumable error. If you are writing a multi-threaded server then you may want to override this behaviour to just kill the faulting <Process>." self quit: -1]. "Resume execution" ^anException! ! !AXDllGUISessionManager categoriesFor: #basicTertiaryStartup!operations-startup!public! ! !AXDllGUISessionManager categoriesFor: #isDLL!private!testing! ! !AXDllGUISessionManager categoriesFor: #keepAlive!idling!public! ! !AXDllGUISessionManager categoriesFor: #logError:!operations-logging!public! ! !AXDllGUISessionManager categoriesFor: #openConsoleStreams!operations!private! ! !AXDllGUISessionManager categoriesFor: #unhandledException:!exceptions!private! ! !AXDllGUISessionManager class methodsFor! icon "Answers an Icon that can be used to represent this class" ^Icon fromId: 154 in: ShellLibrary default ! imageExtension "Answer the suffix for an executable image file" ^'dll'! isRuntime "Answer whether the sessions managed by instances of the receiver are for a run-time applications (as opposed to development, or abstract)." ^true! ! !AXDllGUISessionManager class categoriesFor: #icon!constants!development!must strip!public! ! !AXDllGUISessionManager class categoriesFor: #imageExtension!constants!public! ! !AXDllGUISessionManager class categoriesFor: #isRuntime!public!testing! ! ------------- And running regsvr32 creates 2 crash dumps: ------------- ************************** Dolphin Virtual Machine Dump Report *************************** 14:36:32, 09/02/2006: UndefinedObject does not understand #value *----> VM Context <----* Process: {00F00004:size 249 words, suspended frame 00F003F1, priority 8, callbacks 0 last failure 0:nil, FPE mask 3, thread nil} Active Method: AXDllGUISessionManager>>logError: IP: 00EC30E7 (15) SP: 00F00494 BP: 00F0046C (266) ActiveFrame: {00F00470: cf 00F00455, sp 00F00484, bp 00F0046C, ip 5, AXDllGUISessionManager>>logError:} receiver: a AXDllGUISessionManager arg[0]: a MessageNotUnderstood New Method: VMLibrary>>dump:path:stackDepth:walkbackDepth: Message Selector: #dump:path:stackDepth:walkbackDepth: *----> Stack <----* [00F00494: 276]-->50 [00F00490: 275]-->60 [00F0048C: 274]-->nil [00F00488: 273]-->'UndefinedObject does not understand #value' [00F00484: 272]-->a VMLibrary [00F00480: 271]-->7864886 [00F0047C: 270]-->AXDllGUISessionManager>>logError: [00F00478: 269]-->7864898 [00F00474: 268]-->8 [00F00470: 267]-->7864874 [00F0046C: 266]-->a MessageNotUnderstood [00F00468: 265]-->a AXDllGUISessionManager [00F00464: 264]-->7864872 [00F00460: 263]-->AXDllGUISessionManager>>unhandledException: [00F0045C: 262]-->7864882 [00F00458: 261]-->7 [00F00454: 260]-->7864860 [00F00450: 259]-->a MessageNotUnderstood [00F0044C: 258]-->a AXDllGUISessionManager [00F00448: 257]-->7864858 [00F00444: 256]-->SessionManager>>onUnhandledError: [00F00440: 255]-->7864868 [00F0043C: 254]-->3 [00F00438: 253]-->7864846 [00F00434: 252]-->a MessageNotUnderstood [00F00430: 251]-->a AXDllGUISessionManager [00F0042C: 250]-->7864846 [00F00428: 249]-->Error>>defaultAction [00F00424: 248]-->7864854 [00F00420: 247]-->8 ... <215 slots omitted> ... [00F000C0: 31]-->a MethodContext for: BlockClosure>>ifCurtailed: frame: f000b1 receiver: [] @ 808006 in nil [00F000BC: 30]-->BlockClosure>>ifCurtailed: [00F000B8: 29]-->7864420 [00F000B4: 28]-->20 [00F000B0: 27]-->7864398 [00F000AC: 26]-->7864394 [00F000A8: 25]-->BlockClosure>>ensure: [00F000A4: 24]-->7864406 [00F000A0: 23]-->7 [00F0009C: 22]-->7864382 [00F00098: 21]-->nil [00F00094: 20]-->[] @ 34 in ExceptionHandlerAbstract>>try: [00F00090: 19]-->[] @ 15 in ExceptionHandlerAbstract>>try: [00F0008C: 18]-->a MethodContext for: ExceptionHandlerAbstract>>try: frame: f0007d receiver: a ExceptionHandler [00F00088: 17]-->ExceptionHandlerAbstract>>try: [00F00084: 16]-->7864390 [00F00080: 15]-->42 [00F0007C: 14]-->7864372 [00F00078: 13]-->7864368 [00F00074: 12]-->BlockClosure>>on:do: [00F00070: 11]-->7864380 [00F0006C: 10]-->10 [00F00068: 9]-->7864356 [00F00064: 8]-->[] @ 12 in BlockClosure>>newProcess [00F00060: 7]-->ProcessTermination [00F0005C: 6]-->[] @ 8 in InputState>>forkMain [00F00058: 5]-->[] @ 6 in BlockClosure>>newProcess [00F00054: 4]-->BlockClosure>>newProcess [00F00050: 3]-->7864364 [00F0004C: 2]-->20 [00F00048: 1]-->0 <Bottom of stack> *----> Stack Back Trace <----* {00F00470: cf 00F00455, sp 00F00484, bp 00F0046C, ip 5, AXDllGUISessionManager>>logError:} receiver: a AXDllGUISessionManager arg[0]: a MessageNotUnderstood {00F00454: cf 00F00439, sp 00F00464, bp 00F00450, ip 4, AXDllGUISessionManager>>unhandledException:} receiver: a AXDllGUISessionManager arg[0]: a MessageNotUnderstood {00F00438: cf 00F0041D, sp 00F00448, bp 00F00434, ip 4, AXDllGUISessionManager(SessionManager)>>onUnhandledError:} receiver: a AXDllGUISessionManager arg[0]: a MessageNotUnderstood {00F0041C: cf 00F00405, sp 00F0042C, bp 00F0041C, ip 5, MessageNotUnderstood(Error)>>defaultAction} receiver: a MessageNotUnderstood {00F00404: cf 00F003F1, sp 00F00414, bp 00EBFAC8, ip 57, MessageNotUnderstood(Exception)>>_propagateFrom:} receiver: a MessageNotUnderstood arg[0]: a ExceptionHandler temp[0]: nil temp[1]: a ExceptionHandler temp[2]: nil temp[3]: a Process('Main' base 00F00000 [ACTIVE] in AXDllGUISessionManager>>logError: sp=00000000 ip=8 list=nil) temp[4]: nil {00F003F0: cf 00F003D5, sp 00F00400, bp 00F003EC, ip 6, MessageNotUnderstood(Exception)>>_propagate} receiver: a MessageNotUnderstood temp[0]: nil {00F003D4: cf 00F003BD, sp 00F003E4, bp 00F003D4, ip 12, MessageNotUnderstood(Exception)>>signal} receiver: a MessageNotUnderstood {00F003BC: cf 00F0039D, sp 00F003CC, bp 00F003B4, ip 13, MessageNotUnderstood class>>receiver:message:} receiver: MessageNotUnderstood arg[0]: nil arg[1]: Message selector: #value arguments: a Array {00F0039C: cf 00F00381, sp 00F003AC, bp 00F00398, ip 5, UndefinedObject(Object)>>doesNotUnderstand:} receiver: nil arg[0]: Message selector: #value arguments: a Array {00F00380: cf 00F00365, sp 00F00390, bp 00EBFA58, ip 25, [] in AXDllGUISessionManager(SessionManager)>>argv} receiver: a AXDllGUISessionManager temp[0]: a CRTLibrary temp[1]: nil {00F00364: cf 00F00349, sp 00F0037C, bp 00EBFA90, ip 18, [] in StructureArray(ExternalArray)>>collect:} receiver: a StructureArray arg[0]: [] @ 22 in SessionManager>>argv temp[0]: a Array temp[1]: 1 temp[2]: nil {00F00348: cf 00F00321, sp 00F00360, bp 00F00338, ip 16, StructureArray(ExternalArray)>>uncheckedFrom:to:keysAndValuesDo:} receiver: a StructureArray arg[0]: 1 arg[1]: 2 arg[2]: [] @ 11 in ExternalArray>>collect: temp[0]: 1 {00F00320: cf 00F002FD, sp 00F00330, bp 00F00314, ip 24, StructureArray(ExternalArray)>>from:to:keysAndValuesDo:} receiver: a StructureArray arg[0]: 1 arg[1]: 2 arg[2]: [] @ 11 in ExternalArray>>collect: {00F002FC: cf 00F002E1, sp 00F0030C, bp 00F002F8, ip 8, StructureArray(ExternalArray)>>keysAndValuesDo:} receiver: a StructureArray arg[0]: [] @ 11 in ExternalArray>>collect: {00F002E0: cf 00F002CD, sp 00F002F0, bp 00EBFA90, ip 21, StructureArray(ExternalArray)>>collect:} receiver: a StructureArray arg[0]: [] @ 22 in SessionManager>>argv temp[0]: a Array temp[1]: 1 temp[2]: nil {00F002CC: cf 00F002B9, sp 00F002DC, bp 00EBFA58, ip 27, AXDllGUISessionManager(SessionManager)>>argv} receiver: a AXDllGUISessionManager temp[0]: a CRTLibrary temp[1]: nil {00F002B8: cf 00F002A5, sp 00F002C8, bp 00EBF978, ip 9, AXDllGUISessionManager(SessionManager)>>cmdLineFlags} receiver: a AXDllGUISessionManager temp[0]: nil {00F002A4: cf 00F00289, sp 00F002B4, bp 00F002A0, ip 3, AXDllGUISessionManager(GUISessionManager)>>tertiaryStartup} receiver: a AXDllGUISessionManager temp[0]: nil {00F00288: cf 00F00275, sp 00F00298, bp 00EBFA20, ip 65, [] in AXDllGUISessionManager(SessionManager)>>onStartup:} receiver: a AXDllGUISessionManager arg[0]: a Array {00F00274: cf 00F00255, sp 00F00284, bp 00F0026C, ip 7, BlockClosure>>ensure:} receiver: [] @ 55 in SessionManager>>onStartup: arg[0]: [] @ 63 in SessionManager>>onStartup: temp[0]: SizeGrabber {00F00254: cf 00F00239, sp 00F00264, bp 00EBFA20, ip 67, [] in AXDllGUISessionManager(SessionManager)>>onStartup:} receiver: a AXDllGUISessionManager arg[0]: a Array {00F00238: cf 00F00225, sp 00F00250, bp 00EBF780, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 77 in SessionManager>>onStartup: temp[0]: nil temp[1]: nil temp[2]: nil {00F00224: cf 00F00205, sp 00F00234, bp 00F0021C, ip 4, BlockClosure>>ensure:} receiver: [] @ 35 in SessionManager>>onStartup: arg[0]: [] @ 77 in SessionManager>>onStartup: temp[0]: nil {00F00204: cf 00F001F1, sp 00F00214, bp 00EBFA20, ip 86, AXDllGUISessionManager(SessionManager)>>onStartup:} receiver: a AXDllGUISessionManager arg[0]: a Array {00F001F0: cf 00F001D5, sp 00F00200, bp 00F001EC, ip 11, ProcessorScheduler>>onStartup:} receiver: a ProcessorScheduler arg[0]: a Array {00F001D4: cf 00F001B9, sp 00F001E4, bp 00EBF9B0, ip 11, [] in ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 380 arg[1]: nil arg[2]: 8 arg[3]: a Array {00F001B8: cf 00F001A5, sp 00F001D0, bp 00EBF9E8, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 16 in ProcessorScheduler>>vmi:list:no:with: temp[0]: nil temp[1]: nil temp[2]: nil {00F001A4: cf 00F00181, sp 00F001B4, bp 00EBF9B0, ip 20, ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 380 arg[1]: nil arg[2]: 8 arg[3]: a Array {00F00180: cf 00F0015D, sp 00F001A0, bp 00F00174, ip 47, AXDllImageStripper(ImageStripper)>>snapshot:} receiver: a AXDllImageStripper arg[0]: 'E:\home\xv-tech\binaries\release\overlayGraphicsAX.tmp' temp[0]: a AXDllGUISessionManager temp[1]: 6 {00F0015C: cf 00F00149, sp 00F0016C, bp 00EC81A0, ip 15, AXDllImageStripper(ImageStripper)>>saveExecutable:} receiver: a AXDllImageStripper arg[0]: 'E:\home\xv-tech\binaries\release\overlayGraphicsAX.dll' temp[0]: 'E:\home\xv-tech\binaries\release\overlayGraphicsAX.tmp' temp[1]: nil temp[2]: true temp[3]: nil temp[4]: nil {00F00148: cf 00F00131, sp 00F00158, bp 00F00148, ip 6, MessageSend(MessageSendAbstract)>>value} receiver: a MessageSend {00F00130: cf 00F00109, sp 00F00140, bp 00F00120, ip 44, InputState>>loopWhile:} receiver: a InputState arg[0]: [] @ 6 in InputState>>mainLoop temp[0]: a MSG temp[1]: true temp[2]: a MessageSend {00F00108: cf 00F000F5, sp 00F00118, bp 00EC65C0, ip 12, InputState>>mainLoop} receiver: a InputState {00F000F4: cf 00F000E1, sp 00F00104, bp 00EC65E0, ip 13, [] in InputState>>forkMain} receiver: a InputState {00F000E0: cf 00F000CD, sp 00F000F0, bp 00EC7778, ip 11, ExceptionHandler(ExceptionHandlerAbstract)>>markAndTry} receiver: a ExceptionHandler temp[0]: nil {00F000CC: cf 00F000B1, sp 00F000DC, bp 00EC5810, ip 21, [] in ExceptionHandler(ExceptionHandlerAbstract)>>try:} receiver: a ExceptionHandler arg[0]: [] @ 8 in InputState>>forkMain temp[0]: nil temp[1]: nil temp[2]: a Process('Main' base 00F00000 [ACTIVE] in AXDllGUISessionManager>>logError: sp=00000000 ip=8 list=nil) {00F000B0: cf 00F0009D, sp 00F000C8, bp 00EC57F0, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 34 in ExceptionHandlerAbstract>>try: temp[0]: nil temp[1]: nil temp[2]: nil {00F0009C: cf 00F0007D, sp 00F000AC, bp 00F00094, ip 4, BlockClosure>>ensure:} receiver: [] @ 15 in ExceptionHandlerAbstract>>try: arg[0]: [] @ 34 in ExceptionHandlerAbstract>>try: temp[0]: nil {00F0007C: cf 00F00069, sp 00F0008C, bp 00EC5810, ip 39, ExceptionHandler(ExceptionHandlerAbstract)>>try:} receiver: a ExceptionHandler arg[0]: [] @ 8 in InputState>>forkMain temp[0]: nil temp[1]: nil temp[2]: a Process('Main' base 00F00000 [ACTIVE] in AXDllGUISessionManager>>logError: sp=00000000 ip=8 list=nil) {00F00068: cf 00F00049, sp 00F00078, bp 00F00060, ip 7, BlockClosure>>on:do:} receiver: [] @ 8 in InputState>>forkMain arg[0]: ProcessTermination arg[1]: [] @ 12 in BlockClosure>>newProcess {00F00048: cf 00000001, sp 00F00058, bp 00EC77C0, ip 17, [] in BlockClosure>>newProcess} receiver: [] @ 8 in InputState>>forkMain temp[0]: nil <Bottom of stack> ***** End of dump ***** ************************** Dolphin Virtual Machine Dump Report *************************** 14:36:32, 09/02/2006: Invalid access to memory location. Reading 0x4, IP 0x1001D555 (C:\Archivos de programa\XV-Tech\Squid\bin\overlayGraphicsAX.dll) *----> VM Context <----* Process: {00F00004:size 306 words, suspended frame 00F00401, priority 8, callbacks 0 last failure 2:nil, FPE mask 3, thread nil} Active Method: AXDllGUISessionManager>>logError: IP: 00EC30E7 (15) SP: 00F00578 BP: 00F00550 (323) ActiveFrame: {00F00554: cf 00F00539, sp 00F00568, bp 00F00550, ip 5, AXDllGUISessionManager>>logError:} receiver: a AXDllGUISessionManager arg[0]: a GPFault New Method: VMLibrary>>dump:path:stackDepth:walkbackDepth: Message Selector: #dump:path:stackDepth:walkbackDepth: *----> Stack <----* [00F00578: 333]-->50 [00F00574: 332]-->60 [00F00570: 331]-->nil [00F0056C: 330]-->'Invalid access to memory location. Reading 0x4, IP 0x1001D555 (C:\Archivos de programa\XV-Tech\Squid\bin\overlayGraphicsAX.dll)' [00F00568: 329]-->a VMLibrary [00F00564: 328]-->7865000 [00F00560: 327]-->AXDllGUISessionManager>>logError: [00F0055C: 326]-->7865012 [00F00558: 325]-->8 [00F00554: 324]-->7864988 [00F00550: 323]-->a GPFault [00F0054C: 322]-->a AXDllGUISessionManager [00F00548: 321]-->7864986 [00F00544: 320]-->AXDllGUISessionManager>>unhandledException: [00F00540: 319]-->7864996 [00F0053C: 318]-->7 [00F00538: 317]-->7864974 [00F00534: 316]-->a GPFault [00F00530: 315]-->a AXDllGUISessionManager [00F0052C: 314]-->7864972 [00F00528: 313]-->SessionManager>>onUnhandledError: [00F00524: 312]-->7864982 [00F00520: 311]-->3 [00F0051C: 310]-->7864960 [00F00518: 309]-->a GPFault [00F00514: 308]-->a AXDllGUISessionManager [00F00510: 307]-->7864960 [00F0050C: 306]-->Error>>defaultAction [00F00508: 305]-->7864968 [00F00504: 304]-->8 ... <272 slots omitted> ... [00F000C0: 31]-->a MethodContext for: BlockClosure>>ifCurtailed: frame: f000b1 receiver: [] @ 808006 in nil [00F000BC: 30]-->BlockClosure>>ifCurtailed: [00F000B8: 29]-->7864420 [00F000B4: 28]-->20 [00F000B0: 27]-->7864398 [00F000AC: 26]-->7864394 [00F000A8: 25]-->BlockClosure>>ensure: [00F000A4: 24]-->7864406 [00F000A0: 23]-->7 [00F0009C: 22]-->7864382 [00F00098: 21]-->nil [00F00094: 20]-->[] @ 34 in ExceptionHandlerAbstract>>try: [00F00090: 19]-->[] @ 15 in ExceptionHandlerAbstract>>try: [00F0008C: 18]-->a MethodContext for: ExceptionHandlerAbstract>>try: frame: f0007d receiver: a ExceptionHandler [00F00088: 17]-->ExceptionHandlerAbstract>>try: [00F00084: 16]-->7864390 [00F00080: 15]-->42 [00F0007C: 14]-->7864372 [00F00078: 13]-->7864368 [00F00074: 12]-->BlockClosure>>on:do: [00F00070: 11]-->7864380 [00F0006C: 10]-->10 [00F00068: 9]-->7864356 [00F00064: 8]-->[] @ 12 in BlockClosure>>newProcess [00F00060: 7]-->ProcessTermination [00F0005C: 6]-->[] @ 8 in InputState>>forkMain [00F00058: 5]-->[] @ 6 in BlockClosure>>newProcess [00F00054: 4]-->BlockClosure>>newProcess [00F00050: 3]-->7864364 [00F0004C: 2]-->20 [00F00048: 1]-->0 <Bottom of stack> *----> Stack Back Trace <----* {00F00554: cf 00F00539, sp 00F00568, bp 00F00550, ip 5, AXDllGUISessionManager>>logError:} receiver: a AXDllGUISessionManager arg[0]: a GPFault {00F00538: cf 00F0051D, sp 00F00548, bp 00F00534, ip 4, AXDllGUISessionManager>>unhandledException:} receiver: a AXDllGUISessionManager arg[0]: a GPFault {00F0051C: cf 00F00501, sp 00F0052C, bp 00F00518, ip 4, AXDllGUISessionManager(SessionManager)>>onUnhandledError:} receiver: a AXDllGUISessionManager arg[0]: a GPFault {00F00500: cf 00F004E9, sp 00F00510, bp 00F00500, ip 5, GPFault(Error)>>defaultAction} receiver: a GPFault {00F004E8: cf 00F004D5, sp 00F004F8, bp 00EBFBE0, ip 57, GPFault(Exception)>>_propagateFrom:} receiver: a GPFault arg[0]: a ExceptionHandler temp[0]: nil temp[1]: a ExceptionHandler temp[2]: nil temp[3]: a Process('Main' base 00F00000 [ACTIVE] in AXDllGUISessionManager>>logError: sp=00000000 ip=8 list=nil) temp[4]: nil {00F004D4: cf 00F004B9, sp 00F004E4, bp 00F004D0, ip 6, GPFault(Exception)>>_propagate} receiver: a GPFault temp[0]: nil {00F004B8: cf 00F004A1, sp 00F004C8, bp 00F004B8, ip 12, GPFault(Exception)>>signal} receiver: a GPFault {00F004A0: cf 00F00481, sp 00F004B0, bp 00F00498, ip 8, GPFault class(Win32Fault class)>>signal:with:} receiver: GPFault arg[0]: nil arg[1]: a EXCEPTION_RECORD {00F00480: cf 00F00465, sp 00F00490, bp 00F0047C, ip 5, GPFault class(Exception class)>>signalWith:} receiver: GPFault arg[0]: a EXCEPTION_RECORD {00F00464: cf 00F00445, sp 00F00474, bp 00F0045C, ip 11, ProcessorScheduler>>gpFault:} receiver: a ProcessorScheduler arg[0]: a ByteArray temp[0]: a EXCEPTION_RECORD {00F00444: cf 00F00429, sp 00F00454, bp 00EBFB00, ip 11, [] in ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 1020 arg[1]: nil arg[2]: 5 arg[3]: a ByteArray {00F00428: cf 00F00415, sp 00F00440, bp 00EBFB38, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 16 in ProcessorScheduler>>vmi:list:no:with: temp[0]: nil temp[1]: nil temp[2]: nil {00F00414: cf 00F00401, sp 00F00424, bp 00EBFB00, ip 20, ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 1020 arg[1]: nil arg[2]: 5 arg[3]: a ByteArray {00F00400: cf 00F003D5, sp 00F00410, bp 00F003FC, ip 1, ExternalAddress(Object)>>doesNotUnderstand:} receiver: a ExternalAddress arg[0]: Message selector: #+ arguments: a Array {00F003D4: cf 00F003B5, sp 00F003F4, bp 00F003C8, ip 21, SmallInteger(ExternalAddress)>>dwordAtOffset:} receiver: 7864794 arg[0]: a ExternalAddress temp[0]: 0 temp[1]: 3 {00F003B4: cf 00F00399, sp 00F003C0, bp 00F003B4, ip 4, LPSTR(LPVOID)>>value} receiver: a LPSTR {00F00398: cf 00F00381, sp 00F003AC, bp 00F00398, ip 5, LPSTR>>value} receiver: a LPSTR {00F00380: cf 00F00365, sp 00F00390, bp 00EBFA58, ip 25, [] in AXDllGUISessionManager(SessionManager)>>argv} receiver: a AXDllGUISessionManager temp[0]: a CRTLibrary temp[1]: a LPSTR {00F00364: cf 00F00349, sp 00F0037C, bp 00EBFA90, ip 18, [] in StructureArray(ExternalArray)>>collect:} receiver: a StructureArray arg[0]: [] @ 22 in SessionManager>>argv temp[0]: a Array temp[1]: 2 temp[2]: a LPSTR {00F00348: cf 00F00321, sp 00F00360, bp 00F00338, ip 16, StructureArray(ExternalArray)>>uncheckedFrom:to:keysAndValuesDo:} receiver: a StructureArray arg[0]: 1 arg[1]: 2 arg[2]: [] @ 11 in ExternalArray>>collect: temp[0]: 2 {00F00320: cf 00F002FD, sp 00F00330, bp 00F00314, ip 24, StructureArray(ExternalArray)>>from:to:keysAndValuesDo:} receiver: a StructureArray arg[0]: 1 arg[1]: 2 arg[2]: [] @ 11 in ExternalArray>>collect: {00F002FC: cf 00F002E1, sp 00F0030C, bp 00F002F8, ip 8, StructureArray(ExternalArray)>>keysAndValuesDo:} receiver: a StructureArray arg[0]: [] @ 11 in ExternalArray>>collect: {00F002E0: cf 00F002CD, sp 00F002F0, bp 00EBFA90, ip 21, StructureArray(ExternalArray)>>collect:} receiver: a StructureArray arg[0]: [] @ 22 in SessionManager>>argv temp[0]: a Array temp[1]: 2 temp[2]: a LPSTR {00F002CC: cf 00F002B9, sp 00F002DC, bp 00EBFA58, ip 27, AXDllGUISessionManager(SessionManager)>>argv} receiver: a AXDllGUISessionManager temp[0]: a CRTLibrary temp[1]: a LPSTR {00F002B8: cf 00F002A5, sp 00F002C8, bp 00EBF978, ip 9, AXDllGUISessionManager(SessionManager)>>cmdLineFlags} receiver: a AXDllGUISessionManager temp[0]: nil {00F002A4: cf 00F00289, sp 00F002B4, bp 00F002A0, ip 3, AXDllGUISessionManager(GUISessionManager)>>tertiaryStartup} receiver: a AXDllGUISessionManager temp[0]: nil {00F00288: cf 00F00275, sp 00F00298, bp 00EBFA20, ip 65, [] in AXDllGUISessionManager(SessionManager)>>onStartup:} receiver: a AXDllGUISessionManager arg[0]: a Array {00F00274: cf 00F00255, sp 00F00284, bp 00F0026C, ip 7, BlockClosure>>ensure:} receiver: [] @ 55 in SessionManager>>onStartup: arg[0]: [] @ 63 in SessionManager>>onStartup: temp[0]: SizeGrabber {00F00254: cf 00F00239, sp 00F00264, bp 00EBFA20, ip 67, [] in AXDllGUISessionManager(SessionManager)>>onStartup:} receiver: a AXDllGUISessionManager arg[0]: a Array {00F00238: cf 00F00225, sp 00F00250, bp 00EBF780, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 77 in SessionManager>>onStartup: temp[0]: nil temp[1]: nil temp[2]: nil {00F00224: cf 00F00205, sp 00F00234, bp 00F0021C, ip 4, BlockClosure>>ensure:} receiver: [] @ 35 in SessionManager>>onStartup: arg[0]: [] @ 77 in SessionManager>>onStartup: temp[0]: nil {00F00204: cf 00F001F1, sp 00F00214, bp 00EBFA20, ip 86, AXDllGUISessionManager(SessionManager)>>onStartup:} receiver: a AXDllGUISessionManager arg[0]: a Array {00F001F0: cf 00F001D5, sp 00F00200, bp 00F001EC, ip 11, ProcessorScheduler>>onStartup:} receiver: a ProcessorScheduler arg[0]: a Array {00F001D4: cf 00F001B9, sp 00F001E4, bp 00EBF9B0, ip 11, [] in ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 380 arg[1]: nil arg[2]: 8 arg[3]: a Array {00F001B8: cf 00F001A5, sp 00F001D0, bp 00EBF9E8, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 16 in ProcessorScheduler>>vmi:list:no:with: temp[0]: nil temp[1]: nil temp[2]: nil {00F001A4: cf 00F00181, sp 00F001B4, bp 00EBF9B0, ip 20, ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 380 arg[1]: nil arg[2]: 8 arg[3]: a Array {00F00180: cf 00F0015D, sp 00F001A0, bp 00F00174, ip 47, AXDllImageStripper(ImageStripper)>>snapshot:} receiver: a AXDllImageStripper arg[0]: 'E:\home\xv-tech\binaries\release\overlayGraphicsAX.tmp' temp[0]: a AXDllGUISessionManager temp[1]: 6 {00F0015C: cf 00F00149, sp 00F0016C, bp 00EC81A0, ip 15, AXDllImageStripper(ImageStripper)>>saveExecutable:} receiver: a AXDllImageStripper arg[0]: 'E:\home\xv-tech\binaries\release\overlayGraphicsAX.dll' temp[0]: 'E:\home\xv-tech\binaries\release\overlayGraphicsAX.tmp' temp[1]: nil temp[2]: true temp[3]: nil temp[4]: nil {00F00148: cf 00F00131, sp 00F00158, bp 00F00148, ip 6, MessageSend(MessageSendAbstract)>>value} receiver: a MessageSend {00F00130: cf 00F00109, sp 00F00140, bp 00F00120, ip 44, InputState>>loopWhile:} receiver: a InputState arg[0]: [] @ 6 in InputState>>mainLoop temp[0]: a MSG temp[1]: true temp[2]: a MessageSend {00F00108: cf 00F000F5, sp 00F00118, bp 00EC65C0, ip 12, InputState>>mainLoop} receiver: a InputState {00F000F4: cf 00F000E1, sp 00F00104, bp 00EC65E0, ip 13, [] in InputState>>forkMain} receiver: a InputState {00F000E0: cf 00F000CD, sp 00F000F0, bp 00EC7778, ip 11, ExceptionHandler(ExceptionHandlerAbstract)>>markAndTry} receiver: a ExceptionHandler temp[0]: nil {00F000CC: cf 00F000B1, sp 00F000DC, bp 00EC5810, ip 21, [] in ExceptionHandler(ExceptionHandlerAbstract)>>try:} receiver: a ExceptionHandler arg[0]: [] @ 8 in InputState>>forkMain temp[0]: nil temp[1]: nil temp[2]: a Process('Main' base 00F00000 [ACTIVE] in AXDllGUISessionManager>>logError: sp=00000000 ip=8 list=nil) {00F000B0: cf 00F0009D, sp 00F000C8, bp 00EC57F0, ip 17, BlockClosure>>ifCurtailed:} receiver: [] @ 8421382 in nil arg[0]: [] @ 34 in ExceptionHandlerAbstract>>try: temp[0]: nil temp[1]: nil temp[2]: nil {00F0009C: cf 00F0007D, sp 00F000AC, bp 00F00094, ip 4, BlockClosure>>ensure:} receiver: [] @ 15 in ExceptionHandlerAbstract>>try: arg[0]: [] @ 34 in ExceptionHandlerAbstract>>try: temp[0]: nil {00F0007C: cf 00F00069, sp 00F0008C, bp 00EC5810, ip 39, ExceptionHandler(ExceptionHandlerAbstract)>>try:} receiver: a ExceptionHandler arg[0]: [] @ 8 in InputState>>forkMain temp[0]: nil temp[1]: nil temp[2]: a Process('Main' base 00F00000 [ACTIVE] in AXDllGUISessionManager>>logError: sp=00000000 ip=8 list=nil) {00F00068: cf 00F00049, sp 00F00078, bp 00F00060, ip 7, BlockClosure>>on:do:} receiver: [] @ 8 in InputState>>forkMain arg[0]: ProcessTermination arg[1]: [] @ 12 in BlockClosure>>newProcess {00F00048: cf 00000001, sp 00F00058, bp 00EC77C0, ip 17, [] in BlockClosure>>newProcess} receiver: [] @ 8 in InputState>>forkMain temp[0]: nil <Bottom of stack> ***** End of dump ***** ------------- if someone reached this point: thanks in advance ! martin |
Martin Rubi wrote:
> I'm making my firt dll deployments using Dolphin 5. I'm deploying from Win > 2k, and when I test the component in a win2k, it all goes well. But when I > try to run regsvr32 with the dll in a Win XP, a crash occurs and the > registration fails. Any ideas what am I missing (I don't usually use XP, > so I can be missing some very basic things)? It looks as if the crash starts when the session manager tries to access its own #argv. There have been problems reported before in that situation. I don't think that a COM deployment /has/ an #argv and you can get crashes trying to access it. For a quick-and-dirty fix, it might be sufficient to override #argv in your session manager subclass to answer #(). For all I know that might be the "correct" fix too, if not then you may be able to find something better in the archives. -- chris |
Chris, many thanks, it does fix the problem.
best regards martin "Chris Uppal" > Martin Rubi wrote: > > > I'm making my firt dll deployments using Dolphin 5. I'm deploying from Win > > 2k, and when I test the component in a win2k, it all goes well. But when I > > try to run regsvr32 with the dll in a Win XP, a crash occurs and the > > registration fails. Any ideas what am I missing (I don't usually use XP, > > so I can be missing some very basic things)? > > It looks as if the crash starts when the session manager tries to access its > own #argv. There have been problems reported before in that situation. I > don't think that a COM deployment /has/ an #argv and you can get crashes trying > to access it. > > For a quick-and-dirty fix, it might be sufficient to override #argv in your > session manager subclass to answer #(). For all I know that might be the > "correct" fix too, if not then you may be able to find something better in the > archives. > > -- chris > > |
Martin,
"Martin Rubi" <[hidden email]> wrote in message news:[hidden email]... [...] >> It looks as if the crash starts when the session manager tries to access > its >> own #argv. There have been problems reported before in that situation. >> I >> don't think that a COM deployment /has/ an #argv and you can get crashes > trying >> to access it. >> >> For a quick-and-dirty fix, it might be sufficient to override #argv in > your >> session manager subclass to answer #(). For all I know that might be the >> "correct" fix too, if not then you may be able to find something better >> in > the >> archives. suggested overriding #tertiaryStartup instead, so that it just invokes #basicTertiaryStartup (see http://groups.google.com/group/comp.lang.smalltalk.dolphin/browse_thread/thread/642958cc23bc3485/e73789607ef40e71?lnk=st&q=dolphin+smalltalk+in-process+tertiaryStartup&rnum=1&hl=en#e73789607ef40e71). Based on a quick look, the X6 methods seem pretty similar. HTH, Don [...] |
Don, thanks for pointing that out.
I've fixed my AXDllGUISessionManager with both of your advices (I left Chris's advice just in case some object attemps to read the parameters using SessionManager current) Thanks a lot to both of you again. martin "Don Rylander" escribió en el mensaje news:[hidden email]... > Martin, > "Martin Rubi" wrote in message > news:[hidden email]... > [...] > >> It looks as if the crash starts when the session manager tries to access > > its > >> own #argv. There have been problems reported before in that situation. > >> I > >> don't think that a COM deployment /has/ an #argv and you can get crashes > > trying > >> to access it. > >> > >> For a quick-and-dirty fix, it might be sufficient to override #argv in > > your > >> session manager subclass to answer #(). For all I know that might be the > >> "correct" fix too, if not then you may be able to find something better > >> in > > the > >> archives. > Chris was right about the problem, but when I had this problem in D5, Blair > suggested overriding #tertiaryStartup instead, so that it just invokes > #basicTertiaryStartup (see > http://groups.google.com/group/comp.lang.smalltalk.dolphin/browse_thread/thread/642958cc23bc3485/e73789607ef40e71?lnk=st&q=dolphin+smalltalk+in-process+tertiaryStartup&rnum=1&hl=en#e73789607ef40e71). > > Based on a quick look, the X6 methods seem pretty similar. > > HTH, > > Don > [...] > > |
Martin,
"Martin Rubi" <[hidden email]> wrote in message news:[hidden email]... > Don, thanks for pointing that out. > I've fixed my AXDllGUISessionManager with both of your advices (I left > Chris's advice just in case some object attemps to read the parameters > using > SessionManager current) > > Thanks a lot to both of you again. > martin [...] One more thing: I see that I also changed the #applicationName method, which relies on #argv. I think if you leave things as you have them, #applicationName will always return 'Application'. I changed it to: applicationName "Answer the application name. Use the applications executable name." ^File splitFilenameFrom: SessionManager current imageFileName Hope this helps, too! Don |
Free forum by Nabble | Edit this page |