[LLVMdev] GSoC'09 question - previous mail w/o html
Mihai Balint
mihai at cs.upt.ro
Sat Mar 28 22:35:47 PDT 2009
On Mar 29, 2009, at 2:56 AM, Bill Wendling wrote:
> On Mar 28, 2009, at 1:34 AM, Mihai Balint wrote:
>> On Mar 28, 2009, at 4:39 AM, Anthony Danalis wrote:
>>> On Mar 27, 2009, at 9:15 PM, Dan Gohman wrote:
>>>>
>>>> On Mar 26, 2009, at 8:28 AM, Mihai Balint wrote:
>>>>> This summer however, I plan to create an "optimization" that
>>>>> automatically fixes memory leaks in programs - obviously only
>>>>> those
>>>>> that can be fixed with the available information, for example:
>>>>
>>>> Hello,
>>>>
>>>> This doesn't sound advisable. A memory leak in a normal C/C++
>>>> program
>>>> is a bug, so this wouldn't be an optimization -- it'd be a
>>>> transformation that
>>>> unreliably hides bugs.
>>>>
>>> It doesn't sound correct either. I, for one, have a multithreaded
>>> code where all "created" threads allocate "request" objects, put
>>> them
>>> in a list and wake up the main thread. The main thread on the other
>>> hand sleeps, consumes requests, frees the objects it consumed and
>>> goes
>>> back to sleep in a loop. There is no path between the malloc() and
>>> the free(), but that's how it is supposed to be, there is no leak.
>>>
>>
>> You are right it's not an optimization, it is a bug-fixing
>> transformation and I wasn't really planning on being totally silent
>> and covert about anything I find (fixable or not).
>>
> This sounds more like something that could be added to the clang
> static analyzer ( http://clang.llvm.org/StaticAnalysis.html ).
I just skimmed through clang's static analyzer web-pages and couldn't
find an example analysis, I will dig deeper later. One of the reasons
why llvm is preferred is because of the SSA form representation which
makes analysis implementation easier - but then again I haven't seen a
clang static analysis yet...
> I'm not
> a big fan of the compiler changing the semantics of code that a
> programmer wrote. It's full of pitfalls. If, on the other hand, you
> can tell the programmer that there's the potential for a leak and let
> her determine if it's a "real" leak, that would be much better for all
> concerned.
As it turns out there have been some experiments with a static,
compile-time garbage collector for Java, ( http://www.cs.cornell.edu/projects/frex/index.php
) and in one of the papers they say they were able to statically
deallocate 50%-85% of objects - but for Java where GC is assumed and
there's no address-of operator.
best wishes.
Mihai.
More information about the llvm-dev
mailing list