POV-Ray : Newsgroups : povray.beta-test : Assigning an interior crashes 3.8 beta 2 : Re: Assigning an interior crashes 3.8 beta 2 Server Time
28 Apr 2024 10:06:23 EDT (-0400)
  Re: Assigning an interior crashes 3.8 beta 2  
From: William F Pokorny
Date: 28 Jul 2023 09:13:06
Message: <64c3bee2$1@news.povray.org>
On 5/11/23 07:49, William F Pokorny wrote:
> At the bottom the issue here seems to be that the first created interior 
> gets deleted before the copy in the symbol table code. There was an 
> attempt to move to smart pointers on removing the reference counting in 
> v3.7, and something went wrong there. I just cannot yet see it - or how 
> I might patch it.

I've spent a little more time on this and I don't currently see a clean 
way to fix this issue. Well, other than returning to a plain pointer and 
reference counting as in v3.7 (and v3.8 to some point during development).

Given how the parser is set up, v3.8 is running smart, shared, interior 
pointers through casts to a void pointer and back to a shared pointers.

Pending an actual fix, I strongly recommend v3.8 add a throw in 
symboltable.cpp just after the switch "case INTERIOR_ID_TOKEN:". 
Something like:

throw POV_EXCEPTION_STRING("Interior ID = ID copies broken in v3.8");

While likely the garbage in memory pointed to after the attempted 
interior ID copy will stink enough to crash code somewhere within 
POV-Ray(a), a scene with such a copy could 'execute' without a crash - 
if one is unlucky.

Bill P.

(a) - It's not the actual copy which crashes, but some later operation 
on garbage data.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.