diff options
author | Vitaly Buka <vitalybuka@google.com> | 2018-05-10 04:02:59 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2018-05-10 04:02:59 +0000 |
commit | e0c6eadef780de6328fcc36f2fa31863c4ec2403 (patch) | |
tree | 4f71de125c559bf3e3c0f10ff0f50a324444ed54 /llvm/docs/CommandGuide/llvm-dwarfdump.rst | |
parent | 1d4c29c437d6d22e6934053bfd59468b501d04af (diff) | |
download | bcm5719-llvm-e0c6eadef780de6328fcc36f2fa31863c4ec2403.tar.gz bcm5719-llvm-e0c6eadef780de6328fcc36f2fa31863c4ec2403.zip |
[sanitizer] Don't miss threads by ThreadSuspender
Summary:
Enumerating /proc/<pid>/task/ dir Linux may stop if thread is dead. In this case
we miss some alive threads and can report false memory leaks.
To solve this issue we repeat enumeration if the last thread is dead.
Do detect dead threads same way as proc_task_readdir we use
/proc/<pid>/task/<tid>/status.
Similarly it also ends enumeration of if proc_fill_cache fails, but in this case
Linux sets inode to 1 (Bad block).
And just in case re-list threads if we had to call internal_getdents more than
twice or result takes more than half of the buffer.
Reviewers: eugenis, dvyukov, glider
Subscribers: llvm-commits, kubamracek
Differential Revision: https://reviews.llvm.org/D46517
llvm-svn: 331953
Diffstat (limited to 'llvm/docs/CommandGuide/llvm-dwarfdump.rst')
0 files changed, 0 insertions, 0 deletions