#726 rev. 4776: rxapi has exception

v4.0beta
closed
None
5
2012-08-14
2009-06-09
No

Running the "testSleep.rex" script on a freshly build 4776 debug version from trunk, causes an exception in "rxapi.exe" after the end of the execution.

Here's the stack trace:

rxapi.exe!std::list<APIServerThread *,std::allocator<APIServerThread="" *=""> >::_Insert(std::list<APIServerThread *,std::allocator<APIServerThread="" *=""> >::_Const_iterator<1> _Where=..., APIServerThread * const & _Val=0x00672a10) Line 718 + 0xc bytes C++
rxapi.exe!std::list<APIServerThread *,std::allocator<APIServerThread="" *=""> >::push_back(APIServerThread * const & _Val=0x00672a10) Line 670 + 0x3c bytes C++
rxapi.exe!APIServer::sessionTerminated(APIServerThread * thread=0x00672a10) Line 115 C++
rxapi.exe!APIServerThread::dispatch() Line 58 C++
rxapi.exe!call_thread_function(void * arguments=0x00672a10) Line 51 C++
kernel32.dll!7c80b729()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]

Here's a cut & paste from the source code having a "// <===" added to point to the place where the debugger points to:

void _Insert(const_iterator _Where,
    const _Ty& _Val)
    {   // insert _Val at _Where

#if _HAS_ITERATOR_DEBUGGING
if (_Where._Mycont != this)
_DEBUG_ERROR("list insert iterator outside range");
#endif / _HAS_ITERATOR_DEBUGGING /

    _Nodeptr _Pnode = _Where._Mynode();
    _Nodeptr _Newnode = _Buynode(_Pnode, _Prevnode(_Pnode), _Val);   // <---
    _Incsize(1);
    _Prevnode(_Pnode) = _Newnode;
    _Nextnode(_Prevnode(_Newnode)) = _Newnode;
    }

Here's the script:

--------------- cut here -------------
/ set some seconds to sleep ... /

i=0
i=i+1; a.i = 0
i=i+1; a.i = 1
i=i+1; a.i = .1
i=i+1; a.i = .01
i=i+1; a.i = .001
i=i+1; a.i = .0001
i=i+1; a.i = 1.987654
i=i+1; a.i = 1.001
i=i+1; a.i = 1.01
i=i+1; a.i = 1.1
a.0 = i;

PARSE VERSION version
PARSE SOURCE source
say "running the following Rexx interpreter: ["version"]"
say "parse source yields: ["source"]"
say

l=length(a.0)
tab="09"x
do i=1 to a.0
say right(i,l)"/"a.0 "- rexx: sleeping" a.i "secs)"
call time 'r' / reset timer /
call sysSleep a.i / sleep given time /
time = time('r') / reset timer, receive elapsed time /
say tab tab tab tab tab "elapsed time:" tab format(time, , 3) "secs"
say
end

--------------- cut here -------------

Discussion

  • Rick McGuire

    Rick McGuire - 2009-06-09

    This is not reproducible on either the trunk or beta builds. What version of the compiler are you using to build this?

     
  • Rony G. Flatscher

    O.K.

    Am using MSVS90, MSP SDK for WServer 2003 R2. Here's the compiler version (dated, Nov 8th, 2007):

    F:\work\svn\oorexx\main\trunk>cl
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
    Copyright (C) Microsoft Corporation. All rights reserved.

     
  • Rick McGuire

    Rick McGuire - 2009-06-09

    I've run the complete regression suite using both debug and non debug versions of both the beta and trunk source trees (using the same compiler version). I suspect you just didn't completely recompile all of the files so some of the object files are out of synch.

     


Anonymous

Cancel  Add attachments





Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks