diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2016-05-18 17:50:13 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2016-05-18 17:50:13 +0000 |
| commit | 3379baeb99a9045bffc0ac9b8e3a5b35c640e707 (patch) | |
| tree | daf574765b1dbc9a7085c14cc78996f4f1937726 /lldb/packages/Python/lldbsuite/test | |
| parent | 32173153a47c19b988079b7edc0e2dba30a024fa (diff) | |
| download | bcm5719-llvm-3379baeb99a9045bffc0ac9b8e3a5b35c640e707.tar.gz bcm5719-llvm-3379baeb99a9045bffc0ac9b8e3a5b35c640e707.zip | |
Change the control flow in atomic_compare_exchange_strong to avoid a potential deadlock.
When you assign a shared_ptr, the deleter gets called and assigned. In this routine, the assignment happens inside a critical section, which could (potentially) lead to a deadlock, if the deleter did something wonky. Now we swap the old value with an (empty) temporary shared_ptr, and then let the temporary delete the old value when it goes out of scope (after the lock has been released). This should fix PR#27724. Thanks to Hans Boehm for the bug report and the suggested fix.
llvm-svn: 269965
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
0 files changed, 0 insertions, 0 deletions

