[LLVMdev] Deadlock in llvm-lit on windows 7

Reid Kleckner rnk at google.com
Mon Jan 26 13:32:26 PST 2015


Honestly, lit should just create temp files and get out of the business of
polling and reading from subprocess pipes.

I think you have more or less diagnosed the problem, with the caveat that
communicate will not block because the underlying pipes of that process are
full. It is more likely that some other process is blocked writing to a
full pipe, and the process under communication is also waiting on that
pipe. Consider this pipeline:
  llc -debug -mtriple=x86_64-linux < %s | FileCheck %s

In this case, llc will dump lots of text to stderr, which is piped to lit.
That buffer will fill and writes will block. lit will 'communicate' with
FileCheck, and no progress will be made.

On Mon, Jan 26, 2015 at 9:57 AM, Sumanth Gundapaneni <
sgundapa at codeaurora.org> wrote:

> Hi,
>
>      I am observing a deadlock with llvm-lit on windows 7.
>
> When I attached a debugger, the communicate() call is blocked.
>
>
>
> In file utils/lit/lit/TestRunner.py
>
> >    # FIXME: There is probably still deadlock potential here. Yawn.
>
> >   procData = [None] * len(procs)
>
> >    procData[-1] = procs[-1].communicate()
>
>
>
> I am invoking python directly on windows to run the unit tests.
>
> C:\Python27\python.exe C:\build\llvm\Release\bin\llvm-lit.py -v -j 12
> --param build_mode=Release --param build_config=Win32
> llvm_site_config=C:\llvm_on_win\nightly\build\llvm\tools\polly\test\lit.site.cfg
> test
>
> Note: If I invoke with ā€œ-j 1ā€ , the unit tests finish but took a lot of
> time. There is no deadlock. I am using python version 2.7.6.
>
>
>
> At this moment, I believe the issue is caused by stdout filling the OS
> buffer there by blocking the communicate() call.
>
> It is possible some of the unit tests dump a lot of text/data to stdout.
> FYI, I have a couple of unit tests of my own in the code base.
>
> On Linux, there is no deadlock but on windows I am hitting a deadlock 7
> out of 10 times. I tried invoking python with ā€œ-uā€ but in vain.
>
>
>
> When I looked at llvm-lit code, I saw the code to avoid deadlocks but
> there was no guarantee, like the one I pasted above.
>
> Would appreciate if some one take a look at it and provide more context on
> deadlocks.
>
>
>
> --Sumanth G
>
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150126/70c075db/attachment.html>


More information about the llvm-dev mailing list