I have traced the crash to the final "delete booleng;" (last line) of the
method "void ZONE_CONTAINER::AddClearanceAreasPolygonsToPolysList( BOARD* aPcb
)" in the "zones_convert_brd_items_to_polygons.cpp" class for pcbnew.
The crash is being caused by the kbool class "Bool_Engine" destructor, which is
in turn caused by the DL_Iter<Dtype>::~DL_Iter() destructor via the call to
"delete _linkiter;" in the Bool_Engine destructor. When this is commented out,
the zone fill no longer crashes when using thermal reliefs, e.g.:
Bool_Engine::~Bool_Engine()
{
if ( m_logfile != NULL )
fclose ( m_logfile );
//delete _linkiter; <-- this prevents the crash
delete m_graphlist;
}
Obviously this is not a fix, and I'm not sure why the
DL_Iter<Dtype>::~DL_Iter() would crash pcbnew on my system. I will continue to
look into it to find the solution, but if anyone is familiar with kbool (and
~DL_Iter()) and understands what the problem could be, please chime in. I ran
out of time last night...
Thx!