summaryrefslogtreecommitdiffstats
path: root/polly/lib/Transform/ScheduleOptimizer.cpp
diff options
context:
space:
mode:
authorMaxim Ostapenko <chefmax7@gmail.com>2017-04-06 07:42:27 +0000
committerMaxim Ostapenko <chefmax7@gmail.com>2017-04-06 07:42:27 +0000
commitfe863a65105c75cbb16c91500958f9b97f2d7114 (patch)
tree4db5a24f857996e0339f876bd579953eacfe513d /polly/lib/Transform/ScheduleOptimizer.cpp
parent895171e6eea4ffc9d2b25ca4151dfef268bc8148 (diff)
downloadbcm5719-llvm-fe863a65105c75cbb16c91500958f9b97f2d7114.tar.gz
bcm5719-llvm-fe863a65105c75cbb16c91500958f9b97f2d7114.zip
[lsan] Avoid segfaults during threads destruction under high load
This patch addresses two issues: * It turned out that suspended thread may have dtls->dtv_size == kDestroyedThread (-1) and LSan wrongly assumes that DTV is available. This leads to SEGV when LSan tries to iterate through DTV that is invalid. * In some rare cases GetRegistersAndSP can fail with errno 3 (ESRCH). In this case LSan assumes that the whole stack of a given thread is available. This is wrong because ESRCH can indicate that suspended thread was destroyed and its stack was unmapped. This patch properly handles ESRCH from GetRegistersAndSP in order to avoid invalid accesses to already unpapped threads stack. Differential Revision: https://reviews.llvm.org/D30818 llvm-svn: 299630
Diffstat (limited to 'polly/lib/Transform/ScheduleOptimizer.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud