On Tue, Feb 21, 2017 at 10:20 AM, Rony G. Flatscher <rony.flatsc...@wu.ac.at
> wrote:

> This is what I did: double-clicked on the top stack frame, came to
> RexxMemory.cpp, line 256, code: "markObject->live(liveMark);". Placing the
> cursor on "markObject", the following information could be fetched:
>
> markObject = 0x7e7cf780 {settings={traps=0x7e7cf8b8 {...}
> conditionObj=0x00000000 <NULL> parentArgList=0x7e7cb058 {...} ...} ...}
>   [RexxActivation] = {settings={traps=0x7e7cf8b8 {...}
> conditionObj=0x00000000 <NULL> parentArgList=0x7e7cb058 {0x00000010 {...}}
> ...} ...}
>   RexxVirtualBase = {...}
>   header = {objectSize=312 flags=1 sizePadding=1 }
>   behaviour = rexx.dll!0x0f6bb880 {classType=T_Activation (172)
> behaviourFlags={flags={_Array=0x0f6bb894 {8} } } methodDictionary=...}
>
That is not the top stack frame. This is the top stackframe:

rexx.dll!ObjectHeader::isObjectMarked(unsigned int mark) Line 119       C++


And the variable of interest is the variable "this". That is the bad
reference value.




> This is the SendMessageA frame right above BSF4ooRexx:
>
> >     rexx.dll!SendMessageArray(RexxThreadContext_ * c=0x7dd4aa84, 
> > _RexxObjectPtr * o=0x7e7b8fe0, const char * m=0x00560c48, _RexxArrayObject 
> > * a=0x7e7c4980) Line 164        C++
>
> You need to go up one more level into the bsfrexx code and find out the
address of the directory object you created and passed in the array object.
In theory, this is the bad object being passed to markObject(). Hopefully,
you still have the address of that in one of the bsfrexx local variables
which you can inspect in the debugger. I am fairly certain that these
values will be different, otherwise you would not be getting the exception
you're getting if they were.

Rick


> ---rony
>
>
> On 21.02.2017 16:05, Rick McGuire wrote:
>
> Had a gmail client misfire that send the reply before I finished typing
> it. Starting a new thread because the quoted text was getting out of hand
> and I couldn't find an option in gmail to delete the whole thing.
>
> Ok, I was wrong. This is the original issue once again. An object in the
> SendMessage() arguments is a bad reference, so we're back to the original
> two possibilities of either part of the argument array was over written or
> the object was garbage collected before it was stored in the array.
>
> So, inspect the top stack frame and not the value of the "this" variable.
> That's the bad reference. This *should* be the directly object allocated in
> the bsfrexx code. Hopefully this value is still in a local variable in the
> stackframe that calls SendMessageArray(). If the values are different, then
> this is a memory overwrite. If they are the same, then the object has been
> garbage collected and we need to figure out why.
>
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to