Thought I'd start a new thread on this. (I did see your post by the way Rick. Your last commit fixed the crash.)
In IntepreterInstanceStubs.cpp, AttachThread returns a logical: logical_t RexxEntry AttachThread(RexxInstance *c, RexxThreadContext **tc) { InstanceApiContext context(c); return context.instance->attachThread(*tc); } But, IntepreterInstance::attachThread always returns 0: int InterpreterInstance::attachThread(RexxThreadContext *&attachedContext) { RexxActivity *activity = attachThread(); attachedContext = activity->getThreadContext(); return 0; } So, in InterpreterInstanceStubs.cpp I just committed this change, which seems right: logical_t RexxEntry AttachThread(RexxInstance *c, RexxThreadContext **tc) { InstanceApiContext context(c); return (context.instance->attachThread(*tc) == 0); } Not sure if that's what you had in mind Rick. At the higher level, it seems you thought AtttachThread() could fail. But at the InterpreterInstance level it looks like you thought it would always succeed. With that change, I now get some unpredicatable results. For OleObject, I get a crash with my 'event' testing program. In ooDialog I changed my quick hack to this: printf("Got F1 self=%p interpreter=%p context=%p msg=%s\n", addressedTo->self, interpreter, context, m[i].rexxProgram); if ( interpreter->AttachThread(&context) ) { printf("DID attach thread. context=%p\n", context); context->SendMessage1(addressedTo->self, m[i].rexxProgram, context->NewInteger(phi->iCtrlId)); context->DetachThread(); // detach the thread this is just a test. } else { printf("Did NOT attach thread.\n"); } And sometimes I get the SendMethod1 invoking my method and sometimes I don't: E:\work.ooRexx\3.x\interpreter\Win32Dbg>.\rexx listKey.rex self=7F3AEBD0 contex=000AD464 instance=7FC94FC0 Got back: 0 Got F1 self=7F3AEBD0 interpreter=7FC94FC0 context=00000000 msg=ONHELP DID attach thread. context=7F448CA4 Got F1 self=7F3AEBD0 interpreter=7FC94FC0 context=00000000 msg=ONHELP DID attach thread. context=7F448CA4 ^C No invocation of the onHelp method in the ooDialog dialog above. But running it another time I did get an invocation: E:\work.ooRexx\3.x\interpreter\Win32Dbg>.\rexx listKey.rex self=7F3AEBD0 contex=000AD464 instance=7FC94FC0 Got back: 0 Connect key press (ALL) ret: 0 Got F1 self=7F3AEBD0 interpreter=7FC94FC0 context=00000000 msg=ONHELP DID attach thread. context=7F462A44 in onHelp arg count: 1 <---------------- ^C E:\work.ooRexx\3.x\interpreter\Win32Dbg> I haven't made any progress debugging this. Rick, I could send you the OleObject program, it needs Word. Or, I could send you the ooDialog changes and my test program for that if you wanted to make a temporary change to ooDialog to take a look at it that way. -- Mark Miesfeld ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel