Rick McGuire wrote:
> Well, the first thing you should do is use the release build, not the
> trunk build.  That version would be considered under construction at
> this point, since the exception stack handling is being redone.
>   
O.K., created it, and ran it a couple of times until an exception
occurred (see below). After that I kept running it and the third time
later another exception occurred (see second report) in a different
place. Then running the test suite 10, 15 times did not yield any exception.

---

All those exceptions only occur with the Rexx test unit test that will
spin off  23 Java threads dispatching another Rexx script that spins off
29 Rexx threads. In all those threads there is interaction going on with
Rexx objects directly or via BSF4Rexx in form of Java RexxProxy objects
that dispatch messages on the Rexx side.

{The multithreaded test unit where only Rexx threads are created which
each attach to Java and interact with it, run alwayssuccessfully.)

---

Here exception # 1 (after running the tests a couple of times without a
problem):

    * stack trace

      > rexx.dll!SysSemaphore::post()  Line 100 + 0xa bytes     C++
        rexx.dll!RexxActivity::guardPost()  Line 1743   C++
        rexx.dll!RexxVariable::notify()  Line 138       C++
        rexx.dll!RexxVariable::set(RexxObject * value=0x7fd4af50)  Line 68 + 
0x8 bytes  C++
        rexx.dll!RexxActivation::setLocalVariable(RexxString * name=0x7fcb06d8, 
unsigned int index=3, RexxObject * value=0x7fd4af50)  Line 515  C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x7f66a818, RexxExpressionStack * stack=0x7f66a8d8)  Line 246 C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x7d7b8110, 
RexxString * msgname=0x7f0932f0, RexxObject * * _arglist=0x7e2eccac, unsigned 
int _argcount=7, RexxInstruction * start=0x00000000, ProtectedObject & 
resultObj={...})  Line 516 C++
        rexx.dll!RexxActivation::dispatch()  Line 375 + 0x33 bytes      C++
        rexx.dll!RexxActivity::runThread()  Line 123    C++
        rexx.dll!call_thread_function(void * arguments=0x7f204260)  Line 63     
C++
        kernel32.dll!7c80b729()         
        [Frames below may be incorrect and/or missing, no symbols loaded for 
kernel32.dll]      
        rexx.dll!SysMutex::release()  Line 134  C++
          

    * Here's the end of the Output window:

      The thread 'Win32 Thread' (0x1784) has exited with code 0 (0x0).
      Unhandled exception at 0x0031d68a (rexx.dll) in rexx.exe: 0xC0000005: 
Access violation reading location 0x64f445e9.
          

    * The break occured in SysSemaphore.hpp in the public method:

      void post() { SetEvent(sem); };
          


--------


Here exception # 2 (after running immediately two sets successfuly):

    * call stack trace

      > rexx.dll!RexxList::getFree()  Line 148 + 0x14 bytes     C++
        rexx.dll!RexxList::insert(RexxObject * _value=0x7d84ad98, RexxObject * 
_index=0x00000000)  Line 556 + 0x8 bytes C++
        rexx.dll!RexxList::append(RexxObject * _value=0x7d84ad98)  Line 542     
C++
        rexx.dll!RexxNativeActivation::createLocalReference(RexxObject * 
objr=0x7d84ad98)  Line 1148    C++
        rexx.dll!ApiContext::ret(RexxObject * o=0x7d84ad98)  Line 171   C++
        rexx.dll!ObjectToString(RexxThreadContext_ * c=0x7d7d2c04, 
_RexxObjectPtr * o=0x7d84ad98)  Line 958 + 0x17 bytes        C++
        BSF4Rexx.dll!RexxThreadContext_::ObjectToString(_RexxObjectPtr * 
o=0x7d84ad98)  Line 1022       C++
        BSF4Rexx.dll!RexxCallContext_::ObjectToString(_RexxObjectPtr * 
o=0x7d84ad98)  Line 2366 C++
        BSF4Rexx.dll!BSF_impl(RexxCallContext_ * context=0x03c5f9d4, 
_RexxArrayObject * argArray=0x7d84afb0)  Line 5319 + 0x12 bytes    C++
        BSF4Rexx.dll!BSF(RexxCallContext_ * context=0x03c5f9d4, ValueDescriptor 
* arguments=0x03c5f9f0)  Line 5146 + 0x17 bytes C++
        rexx.dll!RexxNativeActivation::callNativeRoutine(RoutineClass * 
_routine=0x7f2242f0, RexxNativeRoutine * _code=0x7f2242d0, RexxString * 
functionName=0x7d84ace8, RexxObject * * list=0x7e356954, unsigned int count=5, 
ProtectedObject & resultObj={...})  Line 1312    C++
        rexx.dll!RexxNativeRoutine::call(RexxActivity * activity=0x7d7d2bf0, 
RoutineClass * routine=0x7f2242f0, RexxString * functionName=0x7d84ace8, 
RexxObject * * argPtr=0x7e356954, unsigned int count=5, ProtectedObject & 
result={...})  Line 316 C++
        rexx.dll!RoutineClass::call(RexxActivity * activity=0x7d7d2bf0, 
RexxString * msgname=0x7d84ace8, RexxObject * * argPtr=0x7e356954, unsigned int 
argcount=5, ProtectedObject & result={...})  Line 234   C++
        rexx.dll!PackageManager::callNativeRoutine(RexxActivity * 
activity=0x7d7d2bf0, RexxString * name=0x7d84ace8, RexxObject * * 
arguments=0x7e356954, unsigned int argcount=5, ProtectedObject & result={...})  
Line 658    C++
        rexx.dll!SystemInterpreter::invokeExternalFunction(RexxActivation * 
activation=0x7de55918, RexxActivity * activity=0x7d7d2bf0, RexxString * 
target=0x7d84ace8, RexxObject * * arguments=0x7e356954, unsigned int 
argcount=5, RexxString * calltype=0x7fd52378, ProtectedObject & result={...})  
Line 270 + 0x17 bytes   C++
        rexx.dll!RexxActivation::externalCall(RexxString * target=0x7d84ace8, 
unsigned int _argcount=5, RexxExpressionStack * _stack=0x7de559d8, RexxString * 
calltype=0x7fd52378, ProtectedObject & resultObj={...})  Line 2600 + 0x25 bytes 
  C++
        rexx.dll!RexxExpressionFunction::evaluate(RexxActivation * 
context=0x7de55918, RexxExpressionStack * stack=0x7de559d8)  Line 225        C++
        rexx.dll!RexxInstructionAssignment::execute(RexxActivation * 
context=0x7de55918, RexxExpressionStack * stack=0x7de559d8)  Line 122 + 0x1d 
bytes C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x00000000, 
RexxString * msgname=0x00000000, RexxObject * * _arglist=0x03c5fe08, unsigned 
int _argcount=2, RexxInstruction * start=0x00000000, ProtectedObject & 
resultObj={...})  Line 516 C++
        rexx.dll!RexxActivation::interpret(RexxString * codestring=0x7d8496e8)  
Line 2354       C++
        rexx.dll!RexxInstructionInterpret::execute(RexxActivation * 
context=0x7de34670, RexxExpressionStack * stack=0x7de34730)  Line 80        C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x7d836ec8, 
RexxString * msgname=0x7fce6468, RexxObject * * _arglist=0x03c5fe08, unsigned 
int _argcount=2, RexxInstruction * start=0x00000000, ProtectedObject & 
resultObj={...})  Line 516 C++
        rexx.dll!RexxCode::run(RexxActivity * activity=0x7d7d2bf0, RexxMethod * 
method=0x7f1c3648, RexxObject * receiver=0x7d836ec8, RexxString * 
msgname=0x7fce6468, RexxObject * * argPtr=0x03c5fe08, unsigned int argcount=2, 
ProtectedObject & result={...})  Line 136      C++
        rexx.dll!RexxMethod::run(RexxActivity * activity=0x7d7d2bf0, RexxObject 
* receiver=0x7d836ec8, RexxString * msgname=0x7fce6468, RexxObject * * 
argPtr=0x03c5fe08, unsigned int count=2, ProtectedObject & result={...})  Line 
327       C++
        rexx.dll!RexxObject::processUnknown(RexxString * 
messageName=0x7f41e720, RexxObject * * arguments=0x7e356834, unsigned int 
count=2, ProtectedObject & result={...})  Line 895   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x7f41e720, 
RexxObject * * arguments=0x7e356834, unsigned int count=2, ProtectedObject & 
result={...})  Line 798  C++
        rexx.dll!RexxExpressionStack::send(RexxString * message=0x7f41e720, 
unsigned int count=2, ProtectedObject & result={...})  Line 74 + 0x33 bytes C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x7f3f0e60, RexxExpressionStack * stack=0x7f3f0f20)  Line 229 C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x7d833af0, 
RexxString * msgname=0x7f67bc08, RexxObject * * _arglist=0x7e3568a0, unsigned 
int _argcount=5, RexxInstruction * start=0x00000000, ProtectedObject & 
resultObj={...})  Line 516 C++
        rexx.dll!RexxActivation::dispatch()  Line 375 + 0x33 bytes      C++
        rexx.dll!RexxActivity::runThread()  Line 123    C++
        rexx.dll!call_thread_function(void * arguments=0x7d7d2bf0)  Line 63     
C++
        kernel32.dll!7c80b729()         
        [Frames below may be incorrect and/or missing, no symbols loaded for 
kernel32.dll]      
          

    * Here's the end of the Output window:

      Unhandled exception at 0x002ef8e3 (rexx.dll) in rexx.exe: 0xC0000005: 
Access violation reading location 0x02c81b82.
          

    * The break occurred int ListClass.cpp in the getFree() method right
      before the return statement:

       this->free = ENTRY_POINTER(new_index)->next;
          


---rony

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to