Rick, I tried your last commit. I can still get the same hang.
(By the way, I coded up the thread local storage alternate solution and it seems to work nicely. I'll post on that later.) Here is the stack trace from the RexxDlgProc thread, on 64-bit Windows. It's long, but go all the way to the bottom of the stack. The bottom entries look wrong. 0000000000000001() 0000000000000081() Could there be a stack overflow? ntdll.dll!0000000077ef0faa() [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] kernel32.dll!0000000077d6d03b() user32.dll!0000000077c41ea7() user32.dll!0000000077c3fb30() rexx.dll!waitHandle(void * s=0x0000000000000178) Line 88 C++ rexx.dll!SysSemaphore::wait() Line 104 C++ rexx.dll!RexxActivity::waitForDispatch() Line 285 C++ rexx.dll!ActivityManager::addWaitingActivity(RexxActivity * waitingAct=0x000007ffff5f89f0, bool release=false) Line 168 C++ rexx.dll!RexxActivity::requestAccess() Line 1915 C++ rexx.dll!RexxActivity::enterCurrentThread() Line 202 C++ rexx.dll!ApiContext::ApiContext(RexxThreadContext_ * c=0x000007ffff5f8a18) Line 75 C++ rexx.dll!UintptrToObject(RexxThreadContext_ * c=0x000007ffff5f8a18, unsigned __int64 n=0x00000000000000c8) Line 619 C++ oodialog.dll!RexxThreadContext_::Uintptr(unsigned __int64 n=0x00000000000000c8) Line 867 C++ oodialog.dll!idFrom2rexxArg(RexxThreadContext_ * c=0x000007ffff5f8a18, __int64 lParam=0x00000000029ac0a0) Line 623 C++ oodialog.dll!searchNotifyTable(unsigned __int64 wParam=0x00000000000000c8, __int64 lParam=0x00000000029ac0a0, _pbdCSelf * pcpbd=0x000007ffff5eab10) Line 924 C++ oodialog.dll!searchMessageTables(unsigned long message=0x0000004e, unsigned __int64 param=0x00000000000000c8, __int64 lparam=0x00000000029ac0a0, _pbdCSelf * pcpbd=0x000007ffff5eab10) Line 1306 C++ oodialog.dll!RexxDlgProc(HWND__ * hDlg=0x000000000022033c, unsigned int uMsg=0x0000004e, unsigned __int64 wParam=0x00000000000000c8, __int64 lParam=0x00000000029ac0a0) Line 146 C++ user32.dll!0000000077c34582() user32.dll!0000000077c34bf2() user32.dll!0000000077c5467c() user32.dll!0000000077c43abc() user32.dll!0000000077c4231f() user32.dll!0000000077c423fd() ntdll.dll!0000000077ef318f() user32.dll!0000000077c420fa() user32.dll!0000000077c3feed() user32.dll!0000000077c4341b() comctl32.dll!000007ff7f02c802() comctl32.dll!000007ff7f0739f2() comctl32.dll!000007ff7f075f1d() comctl32.dll!000007ff7f077e6f() comctl32.dll!000007ff7f076f87() user32.dll!0000000077c43abc() user32.dll!0000000077c4231f() user32.dll!0000000077c423fd() ntdll.dll!0000000077ef318f() user32.dll!0000000077c408ba() user32.dll!0000000077c408ec() rexx.dll!waitHandle(void * s=0x0000000000000178) Line 83 C++ rexx.dll!SysSemaphore::wait() Line 104 C++ rexx.dll!RexxActivity::waitForDispatch() Line 285 C++ rexx.dll!ActivityManager::addWaitingActivity(RexxActivity * waitingAct=0x000007ffff5f89f0, bool release=false) Line 168 C++ rexx.dll!RexxActivity::requestAccess() Line 1915 C++ rexx.dll!RexxActivity::enterCurrentThread() Line 202 C++ rexx.dll!ApiContext::ApiContext(RexxThreadContext_ * c=0x000007ffff5f8a18) Line 75 C++ rexx.dll!UintptrToObject(RexxThreadContext_ * c=0x000007ffff5f8a18, unsigned __int64 n=0x00000000000000c8) Line 619 C++ oodialog.dll!RexxThreadContext_::Uintptr(unsigned __int64 n=0x00000000000000c8) Line 867 C++ oodialog.dll!idFrom2rexxArg(RexxThreadContext_ * c=0x000007ffff5f8a18, __int64 lParam=0x00000000029ad6e0) Line 623 C++ oodialog.dll!searchNotifyTable(unsigned __int64 wParam=0x00000000000000c8, __int64 lParam=0x00000000029ad6e0, _pbdCSelf * pcpbd=0x000007ffff5eab10) Line 924 C++ oodialog.dll!searchMessageTables(unsigned long message=0x0000004e, unsigned __int64 param=0x00000000000000c8, __int64 lparam=0x00000000029ad6e0, _pbdCSelf * pcpbd=0x000007ffff5eab10) Line 1306 C++ oodialog.dll!RexxDlgProc(HWND__ * hDlg=0x000000000022033c, unsigned int uMsg=0x0000004e, unsigned __int64 wParam=0x00000000000000c8, __int64 lParam=0x00000000029ad6e0) Line 146 C++ user32.dll!0000000077c34582() user32.dll!0000000077c34bf2() user32.dll!0000000077c5467c() user32.dll!0000000077c43abc() user32.dll!0000000077c4231f() user32.dll!0000000077c423fd() ntdll.dll!0000000077ef318f() user32.dll!0000000077c420fa() user32.dll!0000000077c3feed() user32.dll!0000000077c4341b() comctl32.dll!000007ff7f02c802() comctl32.dll!000007ff7f0739f2() comctl32.dll!000007ff7f075f1d() comctl32.dll!000007ff7f077e6f() comctl32.dll!000007ff7f076f87() user32.dll!0000000077c43abc() user32.dll!0000000077c4231f() user32.dll!0000000077c423fd() ntdll.dll!0000000077ef318f() user32.dll!0000000077c408ba() user32.dll!0000000077c408ec() rexx.dll!SysActivity::relinquish() Line 156 C++ rexx.dll!ActivityManager::addWaitingActivity(RexxActivity * waitingAct=0x000007ffff5f89f0, bool release=false) Line 165 C++ rexx.dll!RexxActivity::requestAccess() Line 1915 C++ rexx.dll!RexxActivity::enterCurrentThread() Line 202 C++ rexx.dll!ApiContext::ApiContext(RexxThreadContext_ * c=0x000007ffff5f8a18) Line 75 C++ rexx.dll!ObjectToCSelf(RexxThreadContext_ * c=0x000007ffff5f8a18, _RexxObjectPtr * o=0x000007fffecd2800) Line 576 C++ oodialog.dll!RexxThreadContext_::ObjectToCSelf(_RexxObjectPtr * o=0x000007fffecd2800) Line 847 C++ oodialog.dll!RexxMethodContext_::ObjectToCSelf(_RexxObjectPtr * o=0x000007fffecd2800) Line 1493 C++ oodialog.dll!rxGetSize(RexxMethodContext_ * context=0x00000000029ae318, _RexxObjectPtr * s=0x000007fffecd2800, int argPos=0x00000002) Line 1023 C++ oodialog.dll!dlgctrl_textSize_impl(RexxMethodContext_ * context=0x00000000029ae318, const char * text=0x000007fffebb9df8, _RexxObjectPtr * _size=0x000007fffecd2800, void * pCSelf=0x000007ffff5f9b60) Line 900 C++ oodialog.dll!dlgctrl_textSize(RexxMethodContext_ * context=0x00000000029ae318, ValueDescriptor * arguments=0x00000000029ae200) Line 895 C++ rexx.dll!RexxNativeActivation::run(RexxMethod * _method=0x000007fffedd5ef0, RexxNativeMethod * _code=0x000007fffedd5eb0, RexxObject * _receiver=0x000007fffef77c70, RexxString * _msgname=0x000007fffebb9d50, RexxObject * * _arglist=0x000007fffe909098, unsigned __int64 _argcount=0x0000000000000002, ProtectedObject & resultObj={...}) Line 1226 C++ rexx.dll!RexxNativeMethod::run(RexxActivity * activity=0x000007ffff5f89f0, RexxMethod * method=0x000007fffedd5ef0, RexxObject * receiver=0x000007fffef77c70, RexxString * messageName=0x000007fffebb9d50, RexxObject * * argPtr=0x000007fffe909098, unsigned __int64 count=0x0000000000000002, ProtectedObject & result={...}) Line 279 C++ rexx.dll!RexxMethod::run(RexxActivity * activity=0x000007ffff5f89f0, RexxObject * receiver=0x000007fffef77c70, RexxString * msgname=0x000007fffebb9d50, RexxObject * * argPtr=0x000007fffe909098, unsigned __int64 count=0x0000000000000002, ProtectedObject & result={...}) Line 324 C++ rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000007fffebb9d50, RexxObject * * arguments=0x000007fffe909098, unsigned __int64 count=0x0000000000000002, ProtectedObject & result={...}) Line 793 C++ rexx.dll!RexxExpressionStack::send(RexxString * message=0x000007fffebb9d50, unsigned __int64 count=0x0000000000000002, ProtectedObject & result={...}) Line 74 C++ rexx.dll!RexxInstructionMessage::execute(RexxActivation * context=0x000007ffff7f9c40, RexxExpressionStack * stack=0x000007ffff7f9d88) Line 229 C++ rexx.dll!RexxActivation::run(RexxObject * _receiver=0x000007ffff0bf990, RexxString * msgname=0x000007ffff7f9be0, RexxObject * * _arglist=0x000007ffff7f9b80, unsigned __int64 _argcount=0x0000000000000004, RexxInstruction * start=0x0000000000000000, ProtectedObject & resultObj={...}) Line 522 C++ rexx.dll!RexxCode::run(RexxActivity * activity=0x000007ffff5f89f0, RexxMethod * method=0x000007fffebba740, RexxObject * receiver=0x000007ffff0bf990, RexxString * msgname=0x000007ffff7f9be0, RexxObject * * argPtr=0x000007ffff7f9b80, unsigned __int64 argcount=0x0000000000000004, ProtectedObject & result={...}) Line 136 C++ rexx.dll!RexxMethod::run(RexxActivity * activity=0x000007ffff5f89f0, RexxObject * receiver=0x000007ffff0bf990, RexxString * msgname=0x000007ffff7f9be0, RexxObject * * argPtr=0x000007ffff7f9b80, unsigned __int64 count=0x0000000000000004, ProtectedObject & result={...}) Line 324 C++ rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000007ffff7f9be0, RexxObject * * arguments=0x000007ffff7f9b80, unsigned __int64 count=0x0000000000000004, ProtectedObject & result={...}) Line 793 C++ rexx.dll!RexxObject::sendMessage(RexxString * message=0x000007ffff7f9be0, RexxArray * arguments=0x000007ffff7f9b30, ProtectedObject & result={...}) Line 677 C++ rexx.dll!RexxObject::sendMessage(RexxString * message=0x000007ffff7f9be0, RexxArray * args=0x000007ffff7f9b30) Line 611 C++ rexx.dll!SendMessageArray(RexxThreadContext_ * c=0x000007ffff5f8a18, _RexxObjectPtr * o=0x000007ffff0bf990, const char * m=0x00000000000e1790, _RexxArrayObject * a=0x000007ffff7f9b30) Line 157 C++ > oodialog.dll!RexxThreadContext_::SendMessageA(_RexxObjectPtr * > o=0x000007ffff0bf990, const char * msg=0x00000000000e1790, _RexxArrayObject * > arr=0x000007ffff7f9b30) Line 732 C++ oodialog.dll!searchNotifyTable(unsigned __int64 wParam=0x00000000000000c8, __int64 lParam=0x00000000029af490, _pbdCSelf * pcpbd=0x000007ffff5eab10) Line 995 C++ oodialog.dll!searchMessageTables(unsigned long message=0x0000004e, unsigned __int64 param=0x00000000000000c8, __int64 lparam=0x00000000029af490, _pbdCSelf * pcpbd=0x000007ffff5eab10) Line 1306 C++ oodialog.dll!RexxDlgProc(HWND__ * hDlg=0x000000000022033c, unsigned int uMsg=0x0000004e, unsigned __int64 wParam=0x00000000000000c8, __int64 lParam=0x00000000029af490) Line 146 C++ user32.dll!0000000077c34582() user32.dll!0000000077c34bf2() user32.dll!0000000077c5467c() user32.dll!0000000077c43abc() user32.dll!0000000077c4231f() user32.dll!0000000077c423fd() ntdll.dll!0000000077ef318f() user32.dll!0000000077c420fa() user32.dll!0000000077c3feed() user32.dll!0000000077c4341b() comctl32.dll!000007ff7f02c802() comctl32.dll!000007ff7f073c02() comctl32.dll!000007ff7f0748a0() comctl32.dll!000007ff7f076146() comctl32.dll!000007ff7f078a7b() comctl32.dll!000007ff7f078ea5() comctl32.dll!000007ff7f076ed8() 0000000b00000048() 0000000000000087() 0000000000102300() 00000000000b0048() 0000000000000001() 0000000000000081() -- Mark Miesfeld ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel