[cfe-dev] Why clang needs to fork into itself?
Alp Toker
alp at nuanti.com
Tue Jan 28 17:28:23 PST 2014
On 29/01/2014 00:55, Ted Kremenek wrote:
> On Jan 28, 2014, at 4:35 PM, Alp Toker <alp at nuanti.com
> <mailto:alp at nuanti.com>> wrote:
>
>> On 28/01/2014 22:20, Ted Kremenek wrote:
>>> On Jan 28, 2014, at 2:16 PM, Yuri <yuri at rawbw.com
>>> <mailto:yuri at rawbw.com>> wrote:
>>>
>>>> On 01/28/2014 14:10, Ted Kremenek wrote:
>>>>> The few million users of Clang that I deal with never invoke the
>>>>> compiler directly from the command line. Most of them probably
>>>>> don’t know how to. The use the compiler from an IDE. That can,
>>>>> however, look at a build log and see that a crash report was
>>>>> generated for them, including a shell script that can be provided
>>>>> in a bug report that reruns the compiler with the correct
>>>>> arguments to reproduce the crash.
>>>> If they don't know how to run a compiler, how can they possibly
>>>> know know to program anything? Programming is much more complicated
>>>> and involved than simply running a compiler. And you are saying
>>>> there are millions of them?
>>>>
>>>> Yuri
>>> For them they know enough to run the compiler. They can simply
>>> click “Build” in an IDE. Sure they need to understand the
>>> compilation model, as implied by the programming language, but they
>>> don’t need to memorize all the list of flags, etc., that are needed
>>> to run the compiler from the command line. I’m not saying that
>>> everyone doesn’t know how to use the compiler directly from the
>>> command line, but I’d argue that a very large constituency of
>>> developers (who clearly have demonstrated that they can write
>>> software) don’t have this knowledge, nor do they need it.
>>
>> Yuri, Ted,
>>
>> This is an open-ended argument and I think in this case you're *both*
>> right. It is a handy default to enable a reproducible shell script
>> and we certainly want to preserve those.
>>
>> The community is however interested in finding lighter ways to
>> achieve that with a single process, whether it's Breakpad or
>> something built upon the existing crash handler facilities in LLVM.
>>
>> The ability to disable and debug directly would be useful in some
>> cases and "copy and paste the -cc1 invocation" isn't ideal so on that
>> part I agree with Yuri.
>>
>> Alp.
>
> I’m not married to forking clang. I just don’t think we should
> regress on this functionality, even temporarily. It is extremely
> important to us, far more than being able to debug clang directly
> without pasting the -cc1 invocation. For the latter, in my experience
> one quickly learns what to do if you are hacking on clang. I won’t
> argue that it is great, but it’s trivial to do when you compare it
> against losing good signal from bug reports.
>
> If another solution is available other than forking that accomplishes
> the same aim with capturing reproducible failure cases, then I think
> we should adopt that first before dropping forking. Alternatively, if
> we preserve the forking behavior, possibly as being conditionally
> compiled, that’s fine with me. Within Apple we’ll just continue to
> build it that way.
Agree fully Ted. Forking is tried and tested and yields bug reports from
a mass user base that might not otherwise bother. I also like the fact
that it highlights the separation of concerns between driver and frontend.
The way I see it, if someone proposes a light patch to do in-process
execution using existing LLVM crash handlers selected at runtime by,
say, an environment variable that'd be a welcome feature. If however it
takes conditional compilation I'd be less convinced because that also
has maintenance cost.
Yuri, interested in taking that up?
Alp.
--
http://www.nuanti.com
the browser experts
More information about the cfe-dev
mailing list