[cfe-commits] Threadsafety check crashes on optimized CFGs

Caitlin Sadowski supertri at google.com
Thu Aug 25 18:38:40 PDT 2011


Ted,

Thanks! I believe DeLesley has now written a patch that fixes this and
a few other situations where a data structure was unexpectedly null.
Once he has finished writing test cases for all the various scenarios
we will send it out.

I have a couple of patches "in flight" that add some more
functionality to the analysis, but after these are in I am moving it
into a separate file.

Cheers,

Caitlin

On Thu, Aug 25, 2011 at 12:11 PM, Ted Kremenek <kremenek at apple.com> wrote:
> Simple test cast:
>
> $ cat test.c
> void foo() {
>  if (0)
>   return;
> }
>
> $ clang -Weverything test.c
> <CRASH>
>
> I think your topological sort is not handling the case where predecessors/successors can be null in the CFG due to branches that deemed infeasible at the time the CFG is constructed.
>
> On Aug 23, 2011, at 4:31 PM, Caitlin Sadowski wrote:
>
>>> When I use -Weverything using a clang compiler with this change on the LLVM/Clang codebase, this code crashes a lot.
>>
>> Ok, I will look into that tomorrow. Do you remember any specific files
>> it was crashing on?
>>
>>> This checker is also getting pretty big.  Generally speaking AnalysisBasedWarnings.cpp should only contain the "top-level" logic for driving analyses.  The analyses themselves should be in a separate file and activated via a small API.  When you get a chance, please move the bulk of the logic to libAnalysis, and have AnalysisBasedWarnings.cpp just call the entry point.
>>
>> Ok, sounds good! I will do this soon.
>>
>> Cheers,
>>
>> Caitlin
>>
>>> On Aug 18, 2011, at 9:43 PM, Caitlin Sadowski wrote:
>>>
>>>> Here is an updated thread safety lockset patch which incorporates
>>>> existing llvm iterators to perform the topological sort.
>>>>
>>>> Cheers,
>>>>
>>>> Caitlin
>>>>
>>>> On Wed, Aug 17, 2011 at 4:07 PM, Caitlin Sadowski <supertri at google.com> wrote:
>>>>> Dear ThreadSafety reviewers (probably Doug),
>>>>>
>>>>> Please find an initial lockset implementation patch attached, to
>>>>> review at your earliest convenience. This patch adds basic lock
>>>>> tracking support for the thread safety analysis. It depends on a very
>>>>> small llvm patch (attached and sent to llvm-commits). Code review site
>>>>> here:
>>>>>
>>>>> http://codereview.appspot.com/4894048/
>>>>>
>>>>> This patch also depends on the topological sort patch sent out to the
>>>>> llvm-commits mailing list by DeLesley Hutchins to order the CFG blocks
>>>>> so as to traverse them in one pass in the right order.
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Caitlin
>>>>>
>>>> <threadsafety_initiallockset2.patch>_______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>
>>>
>
>




More information about the cfe-commits mailing list