Ticket #30 fixed!



Great news, it seems that ticket #30 got fixed :-). I'm still testing
it, but so far I can't get it to reproduce.

I also understand why it crashed (there where 4 different reasons so
far, with one of them triggering the three others). All four of the
reasons have been fixed, including the trigger itself.

It had to do with IDLE recurrently/recursively starting and stopping,
combined with having to much items in the local summary array for the
second time, in the recursive attempt, combined with the exception code
that handled having too much items in the array (by removing them) being
wrong.

The IDLE code will no longer recursively start/stop itself. Although
it's not possible anymore has the exception code for when yet the array
is too large been fixed too. And in case the problem that got introduced
still occurs, then wont the summary item's getter for the field try to
return a pointer to invalid memory. In stead it will then return the
static string "Invalid".

I also introduced various locking on extra places. I also added making
sure that when the mmap is reloaded, that not too much items in the
summary array are kept around (it has to be an exact mirror of the mmap
at that point). Etc etc etc  ...

To put it in another way: lots of fixes and improvements happened while
trying to kill this bug. I thought: well, none of the fixes are
significantly changing things nor are they bad (most were actually truly
and simply needed anyway, like the extra locks), so I'll keep 'em.



-- 
Philip Van Hoof, software developer
home: me at pvanhoof dot be 
gnome: pvanhoof at gnome dot org 
http://www.pvanhoof.be/blog







[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]