Commit 71b778c
committed
Fix nullptr dereference bug in TList::RecursiveRemove()
When multiple threads are touching the list of cleanups, another thread
can delete the object retrieved via TObjLink::GetObject(), and then when
it is dereferenced in ob->TestBit(...) it causes a crash in ROOT.
Stack trace:
in TObject::TestBit (this=0x0, f=33554432) at TObject.h:159
^^^
in TList::RecursiveRemove (this=0xb3c3e0, obj=0x7ff3547da6b0)
at root/core/cont/src/TList.cxx:717
^^^
in THashList::RecursiveRemove (this=0xb504b0, obj=0x7ff3547da6b0)
at root/core/cont/src/THashList.cxx:286
in TObject::~TObject (this=0x7ff3547da6b0, __in_chrg=<optimized out>)
at root/core/base/src/TObject.cxx:881 parent 11c2d85 commit 71b778c
1 file changed
+35
-35
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
703 | 703 | | |
704 | 704 | | |
705 | 705 | | |
706 | | - | |
707 | | - | |
708 | | - | |
709 | | - | |
710 | | - | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
711 | 722 | | |
| 723 | + | |
712 | 724 | | |
713 | | - | |
714 | 725 | | |
715 | | - | |
716 | | - | |
717 | | - | |
718 | | - | |
719 | | - | |
720 | | - | |
721 | | - | |
722 | | - | |
723 | | - | |
724 | | - | |
725 | | - | |
726 | | - | |
727 | | - | |
728 | | - | |
729 | | - | |
730 | | - | |
731 | | - | |
732 | | - | |
733 | | - | |
734 | | - | |
735 | | - | |
736 | | - | |
737 | | - | |
738 | | - | |
739 | | - | |
740 | | - | |
741 | | - | |
742 | | - | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
743 | 739 | | |
744 | | - | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
745 | 745 | | |
746 | 746 | | |
747 | 747 | | |
| |||
0 commit comments