HomePhabricator

Fix memory allocating inside signal handler (MI)

Authored by ki.stfu on Mar 19 2015, 10:17 AM.

Description

Fix memory allocating inside signal handler (MI)

Summary:
This patch fixes a memory allocating inside signal handler.

This bug was found by @vharron:

Hi all,

I noticed these thread sanitizer warnings while running lldb-mi tests on
Linux.

WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=39721)
#0 operator new(unsigned long) <null>:0 (lldb-mi-3.7.0+0x000000092b9d)

#1 std::string::_Rep::_S_create(unsigned long, unsigned long,

std::allocator<char> const&) <null>:0 (libstdc++.so.6+0x0000000ba3b8)

#2 CMICmnResources::GetStringFromResource(unsigned int, CMIUtilString&)

const
/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MICmnResources.cpp:434
(lldb-mi-3.7.0+0x00000014ddd8)

#3 CMICmnResources::GetString(unsigned int) const

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MICmnResources.cpp:371
(lldb-mi-3.7.0+0x00000014db81)

#4 sigwinch_handler(int)

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriverMain.cpp:99
(lldb-mi-3.7.0+0x0000001589ff)

#5 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, int,

my_siginfo_t*, void*) tsan_interceptors.o:0 (lldb-mi-3.7.0+0x00000009f25f)

#6 void std::this_thread::sleep_for<long, std::ratio<1l, 1000l>

(std::chrono::duration<long, std::ratio<1l, 1000l> > const&)

/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/thread:279
(lldb-mi-3.7.0+0x00000013243e)

#7 CMIDriver::ReadStdinLineQueue()

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriver.cpp:710
(lldb-mi-3.7.0+0x000000155e62)

#8 CMIDriver::DoMainLoop()

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriver.cpp:631
(lldb-mi-3.7.0+0x000000155d37)

#9 non-virtual thunk to CMIDriver::DoMainLoop()

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriver.cpp:648
(lldb-mi-3.7.0+0x000000155fbd)

#10 CMIDriverMgr::DriverMainLoop()

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriverMgr.cpp:340
(lldb-mi-3.7.0+0x000000159ee6)

#11 main

/usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriverMain.cpp:364
(lldb-mi-3.7.0+0x000000158f60)

Reviewers: vharron, abidh

Reviewed By: abidh

Subscribers: lldb-commits, abidh, vharron

Differential Revision: http://reviews.llvm.org/D8256

llvm-svn: 232735

Details

Committed
ki.stfuMar 19 2015, 10:17 AM
Reviewer
abidh
Differential Revision
D8256: Fix memory allocating inside signal handler (MI)
Parents
rG641f027d82b2: Fix -break-insert for system functions (MI)
Branches
Unknown
Tags
Unknown