Tcl Source Code

View Ticket
Login
Ticket UUID: 1837392
Title: Crash in test dict-19.2
Type: Bug Version: obsolete: 8.5b3
Submitter: dkf Created on: 2007-11-24 01:31:41
Subsystem: 47. Bytecode Compiler Assigned To: dkf
Priority: 9 Immediate Severity:
Status: Closed Last Modified: 2007-11-24 20:44:57
Resolution: Fixed Closed By: dkf
    Closed on: 2007-11-24 13:44:57
Description:
The test dict-19.2 apparently seems to be crashing with a stack corruption problem. (Note that this test only runs in a build with memory debugging.)

Problem (which bites during either INST_DICT_APPEND or INST_DICT_LAPPEND) seems to relate to the stack being relocated during a reentrant call. I think it has to do with the use of the OBJ_UNDER_TOS macro (and friends) after something that was wrapped in [DE]CACHE_STACK_INFO when the stack moved during the recursive call. The trigger is caused by a variable trace that causes an error, so other things in TEBC might also be vulnerable...
User Comments: dkf added on 2007-11-24 20:44:57:
Logged In: YES 
user_id=79902
Originator: YES

Was a problem in the [dict append] compiler, which had got confused about which tokens it was working with and how many there were. Oops!

msofer added on 2007-11-24 19:20:02:

File Added - 255665: smash.stack

Logged In: YES 
user_id=148712
Originator: NO

Repro'ed - stack trace attached.

The stack does not move in 8.5, so that suspicion is not valid. A quick glance at the macros (DE)CACHE_STACK_INFO shows that tosPtr is never rewritten 
File Added: smash.stack

Attachments: