I’m hitting an issue with deadlocks on our fork of the edk2 build system. It 
only happens on our builders (30+ cores), and I can’t repo locally. We realized 
we had fixed the number of threads, and when we removed that from our build 
config we started seeing this issue. 

The build is deadlocking during the `…` so that implies during the autogen 
phase. I hooked up a signal handler so I could catch `kill != 9` and dump the 
Python threads. 
I see these threads:
MainThread:  seems stuck at the  self.AutoGenMgr.join() in StartAutoGen(). 
Thread-1: looks like a logging thread. 
Thread-2: looks like the thread printing …
2 x QueueFeederThread: I’m not sure if these are workers for Python or kicked 
off by the build? 

I’m looking for some advice on how to debug the deadlock. I’ve tried sampling 
via kill -2 etc. and my exception handler but I don’t seem to be able to see 
the work happening on Python threads….

Thread: QueueFeederThread(123145563672576)
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:774
 function __bootstrap
    self.__bootstrap_inner()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:801
 function __bootstrap_inner
    self.run()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:754
 function run
    self.__target(*self.__args, **self.__kwargs)
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py:252
 function _feed
    nwait()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:340
 function wait
    waiter.acquire()

Thread: Thread-2(123145555259392)
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:774
 function __bootstrap
    self.__bootstrap_inner()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:801
 function __bootstrap_inner
    self.run()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:754
 function run
    self.__target(*self.__args, **self.__kwargs)
 ./BaseTools/Source/Python/Common/Misc.py:907 function _ProgressThreadEntry
    time.sleep(self._CheckInterval)

Thread: MainThread(4614635008)
 ./BaseTools/Source/Python/build/build.py:2754 function <module>
    r = Main()
 ./BaseTools/Source/Python/build/build.py:2643 function Main
    MyBuild.Launch()
 ./BaseTools/Source/Python/build/build.py:2438 function Launch
    self._MultiThreadBuildPlatform()
 ./BaseTools/Source/Python/build/build.py:2246 function 
_MultiThreadBuildPlatform
    Wa, self.BuildModules = self.PerformAutoGen(BuildTarget,ToolChain)
 ./BaseTools/Source/Python/build/build.py:2185 function PerformAutoGen
    autogen_rt, errorcode = self.StartAutoGen(mqueue, Pa.DataPipe, 
self.SkipAutoGen, PcdMaList, cqueue)
 ./BaseTools/Source/Python/build/build.py:889 function StartAutoGen
    self.AutoGenMgr.join()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:940
 function join
    self.__block.wait()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:340
 function wait
    waiter.acquire()
 ./BaseTools/Source/Python/build/build.py:2737 function AppleDumpAllThreadStacks
    for filename, lineno, name, line in traceback.extract_stack(stack):

Thread: Thread-1(123145546846208)
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:774
 function __bootstrap
    self.__bootstrap_inner()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:801
 function __bootstrap_inner
    self.run()
 ./BaseTools/Source/Python/AutoGen/AutoGenWorker.py:85 function run
    log_message = self.log_q.get()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py:117
 function get
    res = self._recv()

Thread: QueueFeederThread(123145551052800)
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:774
 function __bootstrap
    self.__bootstrap_inner()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:801
 function __bootstrap_inner
    self.run()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:754
 function run
    self.__target(*self.__args, **self.__kwargs)
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py:252
 function _feed
    nwait()
  
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py:340
 function wait
    waiter.acquire()

Thanks,

Andrew Fish



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#77094): https://edk2.groups.io/g/devel/message/77094
Mute This Topic: https://groups.io/mt/83793143/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to