Rony,

I just thought of one more thing that could cause the error you're
seeing.  If you do an AttachThread() at some point and neglect to do a
corresponding DetachThread() before returning to your caller, you'll
end up with a corrupted activaation stack that will result in problems
with legacy callback APIs like RexxVariablePool or RexxStemSort.
What;s showing up in this traceback very much appears to match what
might happen in that sort of situation.

Rick

On Sun, May 24, 2009 at 7:08 PM, Rony G. Flatscher
<rony.flatsc...@wu-wien.ac.at> wrote:
> Forgot the stack trace, here it goes:
>
>>      rexx.dll!RexxLocalVariables::get(unsigned int index=0)  Line 119 + 0xa
>> bytes        C++
>       rexx.dll!RexxActivation::getLocalStemVariable(RexxString *
> name=0x7ef108d8, unsigned int index=0)  Line 463 + 0x12 bytes C++
>       rexx.dll!RexxActivation::getLocalStem(RexxString * name=0x7ef108d8,
> unsigned int index=0)  Line 472 + 0x10 bytes  C++
>       rexx.dll!RexxStemVariable::sort(RexxActivation * context=0x00000000,
> RexxString * prefix=0x7fcbe430, int order=0, int type=0, unsigned int
> start=1, unsigned int end=4294967295, unsigned int firstcol=0, unsigned int
> lastcol=4294967295)  Line 337 + 0x16 bytes    C++
>       rexx.dll!RexxNativeActivation::stemSort(const char * 
> stemname=0x000ad85c,
> int order=0, int type=0, unsigned int start=1, unsigned int end=4294967295,
> unsigned int firstcol=0, unsigned int lastcol=4294967295)  Line 3171 + 0x2b
> bytes C++
>       rexx.dll!RexxStemSort(const char * stemname=0x000ad85c, int order=0, int
> type=0, unsigned int start=1, unsigned int end=4294967295, unsigned int
> firstcol=0, unsigned int lastcol=4294967295)  Line 419 + 0x24 bytes   C++
>       rexxutil.dll!SysStemSort(const char * name=0x7eeeac34, unsigned int
> numargs=1, _CONSTRXSTRING * args=0x000adad4, const char *
> queuename=0x7eee6394, _RXSTRING * retstr=0x000adabc)  Line 5299 + 0x2d
> bytes C++
>       rexx.dll!RexxNativeActivation::callRegisteredRoutine(RoutineClass *
> _routine=0x7fcb6948, RegisteredRoutine * _code=0x7fcb9758, RexxString *
> functionName=0x7eeeac10, RexxObject * * list=0x7df62448, unsigned int
> count=1, ProtectedObject & resultObj={...})  Line 1432 + 0x34 bytes   C++
>       rexx.dll!RegisteredRoutine::call(RexxActivity * activity=0x7eee5188,
> RoutineClass * routine=0x7fcb6948, RexxString * functionName=0x7eeeac10,
> RexxObject * * argPtr=0x7df62448, unsigned int count=1, ProtectedObject &
> result={...})  Line 353       C++
>       rexx.dll!RoutineClass::call(RexxActivity * activity=0x7eee5188, 
> RexxString
> * msgname=0x7eeeac10, RexxObject * * argPtr=0x7df62448, unsigned int
> argcount=1, ProtectedObject & result={...})  Line 234 C++
>       rexx.dll!PackageManager::callNativeRoutine(RexxActivity *
> activity=0x7eee5188, RexxString * name=0x7eeeac10, RexxObject * *
> arguments=0x7df62448, unsigned int argcount=1, ProtectedObject &
> result={...})  Line 658       C++
>       rexx.dll!SystemInterpreter::invokeExternalFunction(RexxActivation *
> activation=0x7eee18e0, RexxActivity * activity=0x7eee5188, RexxString *
> target=0x7eeeac10, RexxObject * * arguments=0x7df62448, unsigned int
> argcount=1, RexxString * calltype=0x7fd52690, ProtectedObject &
> result={...})  Line 267 + 0x17 bytes  C++
>       rexx.dll!RexxActivation::externalCall(RexxString * target=0x7eeeac10,
> unsigned int _argcount=1, RexxExpressionStack * _stack=0x7eee19a0,
> RexxString * calltype=0x7fd52690, ProtectedObject & resultObj={...})  Line
> 2586 + 0x25 bytes     C++
>       rexx.dll!RexxInstructionCall::execute(RexxActivation * 
> context=0x7eee18e0,
> RexxExpressionStack * stack=0x7eee19a0)  Line 277     C++
>       rexx.dll!RexxActivation::run(RexxObject * _receiver=0x00000000, 
> RexxString
> * msgname=0x7fd52450, RexxObject * * _arglist=0x7eee6610, unsigned int
> _argcount=0, RexxInstruction * start=0x00000000, ProtectedObject &
> resultObj={...})  Line 518    C++
>       rexx.dll!RexxCode::call(RexxActivity * activity=0x7eee5188, 
> RoutineClass *
> routine=0x7eee7040, RexxString * msgname=0x7fd52450, RexxObject * *
> argPtr=0x7eee6610, unsigned int argcount=0, RexxString *
> calltype=0x7fcef878, RexxString * environment=0x7eee5a20, int context=16,
> ProtectedObject & result={...})  Line 116     C++
>       rexx.dll!RoutineClass::runProgram(RexxActivity * activity=0x7eee5188,
> RexxString * calltype=0x7fcef878, RexxString * environment=0x7eee5a20,
> RexxObject * * arguments=0x7eee6610, unsigned int argCount=0,
> ProtectedObject & result={...})  Line 306     C++
>       rexx.dll!RexxStartDispatcher::run()  Line 139   C++
>       rexx.dll!RexxNativeActivation::run(ActivityDispatcher & 
> dispatcher={...})
> Line 1533     C++
>       rexx.dll!RexxActivity::run(ActivityDispatcher & target={...})  Line
> 2945  C++
>       rexx.dll!ActivityDispatcher::invoke(_RXSYSEXIT * exits=0x00000000, const
> char * env=0x0041d248)  Line 122      C++
>       rexx.dll!RexxStart(unsigned int argcount=0, _CONSTRXSTRING *
> arglist=0x000aff5c, const char * programname=0x00a53871, _RXSTRING *
> instore=0x00000000, const char * envname=0x0041d248, int calltype=0,
> _RXSYSEXIT * exits=0x00000000, short * retcode=0x000adf28, _RXSTRING *
> result=0x000aff4c)  Line 164  C++
>       rexx.exe!main(int argc=2, char * * argv=0x00a53848)  Line 196 + 0x27
> bytes C++
>       rexx.exe!__tmainCRTStartup()  Line 266 + 0x19 bytes     C
>       rexx.exe!mainCRTStartup()  Line 182     C
>       kernel32.dll!7c817077()         
>       [Frames below may be incorrect and/or missing, no symbols loaded for
> kernel32.dll] 
>
>
> The Rexx script gets executed via rexx.exe and loads BSF4Rexx to interact
> with Java and collects the properties that then get sorted. (The Java
> properties and their values look o.k., nothing scrambled there.)
>
> --rony
> ------------------------------------------------------------------------------
> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
> is a gathering of tech-side developers & brand creativity professionals.
> Meet
> the minds behind Google Creative Lab, Visual Complexity, Processing, &
> iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to