[PATCH] Fix a crash that occurs when PWD is invalid.
Andrew Trick
atrick at apple.com
Mon Dec 9 15:02:54 PST 2013
On Dec 9, 2013, at 2:50 PM, Eric Christopher <echristo at gmail.com> wrote:
> On Mon, Dec 9, 2013 at 1:58 PM, Filip Pizlo <fpizlo at apple.com> wrote:
>>
>> On Dec 9, 2013, at 12:42 PM, Andrew Trick <atrick at apple.com> wrote:
>>
>>
>> On Dec 9, 2013, at 12:01 PM, Eric Christopher <echristo at gmail.com> wrote:
>>
>> Out of curiosity why isn't it able to get a compilation dir?
>>
>>
>> Probably one of these.
>>
>> The getcwd() function will fail if:
>>
>> [EACCES] Read or search permission was denied for a component
>> of the pathname.
>>
>> [ENOENT] A component of the pathname no longer exists.
>>
>> Phil might know for sure.
>>
>>
>> I'm not sure, actually. ;-) When I hit the bug it was probably ENOENT
>> caused by weirdness in our JSC test harness.
>>
>> But, broadly, there is no requirement for a client of JavaScriptCore to run
>> with $PWD set to anything remotely sensible. Moreover, it's my
>> understanding that libraries and frameworks in general never assume anything
>> about the sanity of $PWD unless they are asked to do relative path IO. This
>> isn't just a JSC bug: if the claim is that LLVM is a JIT library then it's
>> probably best if LLVM gracefully handles not having a sane $PWD.
>>
>
> That's not quite what I'm talking about, FWIW I agree that you
> shouldn't have to have an environment at all :)
>
> Basically the lines of code in MCDwarf.cpp are supposed to be when
> generating dwarf for assembly files and I wasn't under the impression
> you were compiling .s files. :)
>
> That code should probably have some decent fallback in it, but I don't
> think a null DW_AT_compilation_dir is the correct one. It should omit
> the attribute if it can't get a valid value.
You think we should omit the entire compile_unit DIE if we don’t find the absolute path? If we simply omit the DIE, do you think any tools could be confused? Is it worth adding a special case for a situation that cannot conceivably happen in the context of compiling .s files? I’d be happy to simply assert that CompilationDir is non-empty if that’s preferable to emitting a DIE with an empty path.
-Andy
>
> -eric
>
>
>> -eric
>>
>> On Mon, Dec 9, 2013 at 11:41 AM, Andrew Trick <atrick at apple.com> wrote:
>>
>> MCJIT needs to be able to run in hostile environments, even when PWD
>> is invalid. There's no need to crash MCJIT in this case.
>>
>> If we do want to guarantee valid CompilationDir, that should be done
>> only for clients of getCompilationDir(). This is as simple as checking
>> for an empty string.
>>
>> The obvious fix is to simply leave MCContext's CompilationDir empty
>> when PWD can't be determined. The only behavioral difference would be
>> that EmitGenDwarfInfo would output an empty string when recording the
>> working dir for the assembly output.
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131209/8760578a/attachment.html>
More information about the llvm-commits
mailing list