Unable to register DLL after method stripping...

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

Unable to register DLL after method stripping...

talios@gmail.com
Earlier I had mentioned that whenever I added "strip methods" to my
deployment settings Dolphin crashed.  I've just rebuilt my image using
my new purchased licence key and voila - it works....  and happilly my
DLL is now alot smaller.

Only - now it doesn't register, my guess is I need to set a manual
requires for something...

Time to go hunting, thought I'd post here in the hope that if I don't
find it, someone might post a reply, and if I do find it, I can follow
it up with the solution....

amrk


************************** Dolphin Virtual Machine Dump Report
***************************

10:53:50 AM, 9/9/2004: UndefinedObject does not understand #value

*----> VM Context <----*
Process: {00F00004:size 249 words, suspended frame 00F00405, priority 8,
callbacks 0
last failure 0:nil, FPE mask 3, thread nil}
Active Method: SessionManager>>logError:
IP: 00C7CA8D (13)
SP: 00F00494
BP: 00F0046C (266)
ActiveFrame: {00F00470: cf 00F00455, sp 00F00484, bp 00F0046C, ip 5,
GUIAXDllSessionManager(SessionManager)>>logError:}
    receiver: a GUIAXDllSessionManager
    arg[0]: a MessageNotUnderstood


New Method: VMLibrary>>dump:path:stackDepth:walkbackDepth:
Message Selector: #dump:path:stackDepth:walkbackDepth:

*----> Stack Back Trace <----*
{00F00470: cf 00F00455, sp 00F00484, bp 00F0046C, ip 5,
GUIAXDllSessionManager(SessionManager)>>logError:}
    receiver: a GUIAXDllSessionManager
    arg[0]: a MessageNotUnderstood

{00F00454: cf 00F00439, sp 00F00464, bp 00F00450, ip 4,
GUIAXDllSessionManager(SessionManager)>>unhandledException:}
    receiver: a GUIAXDllSessionManager
    arg[0]: a MessageNotUnderstood

{00F00438: cf 00F0041D, sp 00F00448, bp 00F00434, ip 4,
GUIAXDllSessionManager(SessionManager)>>onUnhandledError:}
    receiver: a GUIAXDllSessionManager
    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 00DC07F0, 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
SessionManager>>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 00DC0780, ip 25, [] in
GUIAXDllSessionManager(SessionManager)>>argv}
    receiver: a GUIAXDllSessionManager
    temp[0]: a CRTLibrary
    temp[1]: nil

{00F00364: cf 00F00349, sp 00F0037C, bp 00DC07B8, 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]: 3
    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]: 3
    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 00DC07B8, 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 00DC0780, ip 27,
GUIAXDllSessionManager(SessionManager)>>argv}
    receiver: a GUIAXDllSessionManager
    temp[0]: a CRTLibrary
    temp[1]: nil

{00F002B8: cf 00F002A5, sp 00F002C8, bp 00DC0748, ip 9,
GUIAXDllSessionManager(SessionManager)>>cmdLineFlags}
    receiver: a GUIAXDllSessionManager
    temp[0]: nil

{00F002A4: cf 00F00289, sp 00F002B4, bp 00F002A0, ip 3,
GUIAXDllSessionManager(GUISessionManager)>>tertiaryStartup}
    receiver: a GUIAXDllSessionManager
    temp[0]: nil

{00F00288: cf 00F00275, sp 00F00298, bp 00DC06D8, ip 65, [] in
GUIAXDllSessionManager(SessionManager)>>onStartup:}
    receiver: a GUIAXDllSessionManager
    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]: a IPDolphin

{00F00254: cf 00F00239, sp 00F00264, bp 00DC06D8, ip 67, [] in
GUIAXDllSessionManager(SessionManager)>>onStartup:}
    receiver: a GUIAXDllSessionManager
    arg[0]: a Array

{00F00238: cf 00F00225, sp 00F00250, bp 00DC0710, 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 00DC06D8, ip 86,
GUIAXDllSessionManager(SessionManager)>>onStartup:}
    receiver: a GUIAXDllSessionManager
    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 00DC0668, 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 00DC06A0, 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 00DC0668, 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]: 'C:\Documents and Settings\Talios\My Documents\SMSComposer.tmp'
    temp[0]: a GUIAXDllSessionManager
    temp[1]: 6

{00F0015C: cf 00F00149, sp 00F0016C, bp 00DBFD58, ip 15,
AXDllImageStripper(ImageStripper)>>saveExecutable:}
    receiver: a AXDllImageStripper
    arg[0]: 'C:\Documents and Settings\Talios\My Documents\SMSComposer.dll'
    temp[0]: 'C:\Documents and Settings\Talios\My Documents\SMSComposer.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 00DBED50, ip 12,
InputState>>mainLoop}
    receiver: a InputState

{00F000F4: cf 00F000E1, sp 00F00104, bp 00DBED00, ip 13, [] in
InputState>>forkMain}
    receiver: a InputState

{00F000E0: cf 00F000CD, sp 00F000F0, bp 00DC2E68, ip 11,
ExceptionHandler(ExceptionHandlerAbstract)>>markAndTry}
    receiver: a ExceptionHandler
    temp[0]: nil

{00F000CC: cf 00F000B1, sp 00F000DC, bp 00DC35F0, 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
SessionManager>>logError: sp=00000000 ip=8 list=nil)

{00F000B0: cf 00F0009D, sp 00F000C8, bp 00DC36F0, 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 00DC35F0, 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
SessionManager>>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 00DC2E08, ip 17, [] in
BlockClosure>>newProcess}
    receiver: [] @ 8 in InputState>>forkMain
    temp[0]: nil

<Bottom of stack>

***** End of dump *****


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

talios@gmail.com
Mark Derricutt wrote:

> {00F00180: cf 00F0015D, sp 00F001A0, bp 00F00174, ip 47,
> AXDllImageStripper(ImageStripper)>>snapshot:}
>    receiver: a AXDllImageStripper
>    arg[0]: 'C:\Documents and Settings\Talios\My
> Documents\SMSComposer.tmp'
>    temp[0]: a GUIAXDllSessionManager
>    temp[1]: 6
>
> {00F0015C: cf 00F00149, sp 00F0016C, bp 00DBFD58, ip 15,
> AXDllImageStripper(ImageStripper)>>saveExecutable:}
>    receiver: a AXDllImageStripper
>    arg[0]: 'C:\Documents and Settings\Talios\My
> Documents\SMSComposer.dll'
>    temp[0]: 'C:\Documents and Settings\Talios\My
> Documents\SMSComposer.tmp'
>    temp[1]: nil
>    temp[2]: true
>    temp[3]: nil
>    temp[4]: nil

This piece has me concerned, why would my stripped, deployed application
want to try call #saveExecutable when run through regsvr32....

Somethings gone afowl here me thinks....  mmmm.

Mark


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

Chris Uppal-3
In reply to this post by talios@gmail.com
Mark Derricutt wrote:

> Time to go hunting, thought I'd post here in the hope that if I don't
> find it, someone might post a reply, and if I do find it, I can follow
> it up with the solution....

To me it looks as if you have a custom session manager that is calling #argv
(via #cmdLineFlags) in its #tertiaryStartup, and that that is falling over
because the 'argv' returned by the CRTLibrary is NULL (0).

I don't know why:

    CRTLibrary default argv

should be answering 0.  Perhaps its something to do with the fact that you are
deploying as an ActiveX control, not a "normal" application...

As far as #saveExecutable: goes.  I don't /think/ you need to worry about it.
AIUI, it's an artefact of the way the image is snapshotted during deployment,
and then resumes where it left off as the deployed .exe starts before being
"interrupted" by the VM telling it to initiate the startup sequence.

I know this has been mentioned here recently, but I can't find the post in
question.

    -- chris


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

Don Rylander-3
Mark and Chris
"Chris Uppal" <[hidden email]> wrote in message
news:[hidden email]...
> Mark Derricutt wrote:
>
[...]
> I know this has been mentioned here recently, but I can't find the post in
> question.
I guess I didn't read Mark's posts closely enough, but I had the same
problem.

Presumably you're using a custom subclass of SessionManager (Blair said it's
the result of using a GUI SessionManager in a DLL), in which case you need
to override #tertiariyStartup so that it invokes only #basicTertiaryStartup.

For more detail (of dubious utility), see
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&safe=active&threadm=2nstobF4fli9U1%40uni-berlin.de&rnum=1&prev=/groups%3Fq%3D%2522Error%2Bregistering%2Ba%2BDLL%2Bwith%2Bregsvr32%2522%26hl%3Den%26lr%3D%26ie%3DUTF-8%26group%3Dcomp.lang.smalltalk.dolphin%26safe%3Dactive%26selm%3D2nstobF4fli9U1%2540uni-berlin.de%26rnum%3D1

HTH,

Don

>
>     -- chris
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

talios@gmail.com
Don Rylander wrote:

>Presumably you're using a custom subclass of SessionManager (Blair said it's
>the result of using a GUI SessionManager in a DLL), in which case you need
>to override #tertiariyStartup so that it invokes only #basicTertiaryStartup.
>  
>
Yep - using a custom SessionManager that initializes the GUI system (
was posted by somewhere here awhile back ).  I'll look at
#tertiaryStartup and report back...

Mark


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

talios@gmail.com
In reply to this post by Don Rylander-3
Don Rylander wrote:

>Presumably you're using a custom subclass of SessionManager (Blair said it's
>the result of using a GUI SessionManager in a DLL), in which case you need
>to override #tertiariyStartup so that it invokes only #basicTertiaryStartup.
>  
>
Yep - the exact same problems you had.  I also had to override
#applicationName.

Mark


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

talios@gmail.com
Mark Derricutt wrote:

> Yep - the exact same problems you had.  I also had to override
> #applicationName.

Damm, ok, now this is pissing me off.  It worked the first time I
rebuilt the DLL but not the successive times :( Right - 2am and time for
sleep instead of code.   I've prolly missed something..


Reply | Threaded
Open this post in threaded view
|

Re: Unable to register DLL after method stripping...

Don Rylander-3
In reply to this post by talios@gmail.com
Mark,
"Mark Derricutt" <[hidden email]> wrote in message
news:chujqd$[hidden email]...
> Don Rylander wrote:
>
> >Presumably you're using a custom subclass of SessionManager (Blair said
it's
> >the result of using a GUI SessionManager in a DLL), in which case you
need
> >to override #tertiariyStartup so that it invokes only
#basicTertiaryStartup.
> >
> >
> Yep - using a custom SessionManager that initializes the GUI system (
> was posted by somewhere here awhile back ).[...]

Hmm.  I bet I can guess why we had the same problems, then.  Apparently
Google archives aren't being properly refreshed from my STS Repository.

Let me know if you'd like the version I'm currently using, even if only for
comparison to your own code.

Don