BTW, bonus points to vc++ for catching this!

Jim

On Sep 27, 2013, at 8:45 AM, [email protected] wrote:

> Presumably you could also fix this just by making the iterator use correct:
> 
> Index: source/Symbol/Symtab.cpp
> ===================================================================
> --- source/Symbol/Symtab.cpp  (revision 191471)
> +++ source/Symbol/Symtab.cpp  (working copy)
> @@ -682,7 +682,7 @@
>             if (symbol_type == eSymbolTypeAny || m_symbols[*pos].GetType() == 
> symbol_type)
>                 ++pos;
>             else
> -                indexes.erase(pos);
> +                pos = indexes.erase(pos);
>         }
>     }
>     return indexes.size();
> @@ -701,7 +701,7 @@
>             if (symbol_type == eSymbolTypeAny || m_symbols[*pos].GetType() == 
> symbol_type)
>                 ++pos;
>             else
> -                indexes.erase(pos);
> +                pos = indexes.erase(pos);
>         }
>     }
>     return indexes.size();
> 
> We use this idiom in a bunch of places (correctly in all the others I could 
> find...)  I don't actually know how that code worked as originally written.
> 
> Jim
> 
> 
> On Sep 27, 2013, at 1:11 AM, Carlo Kok <[email protected]> wrote:
> 
>> 
>> Symtab.cpp in lldb erases entries while iterating through the list. While 
>> this is fine in gcc/clang vc++ asserts on it. Attached patch fixes it.
>> 
>> 
>> There's another bit of code concerns me in SymbolFileDWARFDebugMap.cpp:
>> 
>> TimeValue oso_mod_time (oso_file.GetModificationTime());
>> if (oso_mod_time != comp_unit_info->oso_mod_time)
>> 
>> here it compares the file date with the comp_unit_info. This check fails if 
>> the object files are copied to another computer for debugging, or even 
>> accessed over a mapped drive. For my local copy I just removed the check 
>> though obviously that's not the solution.
>> 
>> -- 
>> Carlo Kok
>> RemObjects Software
>> <symtab_erase_iterator.patch>_______________________________________________
>> lldb-commits mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> 
> _______________________________________________
> lldb-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to