Debugger bugfix

John Swensen jpswensen at comcast.net
Mon Nov 24 06:08:51 CST 2008


On Nov 24, 2008, at 5:26 AM, David Bateman wrote:

> John Swensen wrote:
>> Attached is a changeset to fix a bug I encountered in the  
>> debugger.  The problem was in the  
>> bp_table::do_get_breakpoint_list(...) function where there is a  
>> loop over an STL iterator which calls out_of_date_check() in each  
>> iteration.  The problem occurred because out_of_date_check(), in  
>> turn, will call remove_all_breakpoints_in_file() when the file has  
>> changed, which modifies the object STL map being iterated over.
>>
>> So I added another set of loops to take care of processing out-of- 
>> date breakpoints before building up the list of breakpoints for  
>> dbstatus().
>>
>> John Swensen
>>
>>
> John,
>
> This patch looks right to me, but can you give an example of Octave  
> code that causes the bug to manifest? Is this related to the thread
>
> http://www-old.cae.wisc.edu/pipermail/octave-maintainers/2008-September/008657.html
>
> and continued in
>
> http://www-old.cae.wisc.edu/pipermail/octave-maintainers/2008-October/008831.html
>
> Cheers
> David
>
> -- 
> David Bateman                                 
> David.Bateman at motorola.com
> Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph)  
> Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob)  
> 91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax)
> The information contained in this communication has been classified  
> as:
> [x] General Business Information [ ] Motorola Internal Use Only [ ]  
> Motorola Confidential Proprietary
>

I don't think this bug had anything to do with those threads.  This  
was much more basic.  Try the following:

1) Add a breakpoint to a function
2) Call dbstatus
3) Modify the file in which the breakpoint was set (e.g. add and empty  
new line)
4) Call dbstatus and watch octave crash

I think the behavior is unique to dbstatus because it was modifying  
the STL::map while in the middle of iterating through it, because of  
the out of date check on the file.

John Swensen



More information about the Octave-maintainers mailing list