Jie Yu created MESOS-9134:
-----------------------------
Summary: fs::MountTable::read might not be thread safe.
Key: MESOS-9134
URL: https://issues.apache.org/jira/browse/MESOS-9134
Project: Mesos
Issue Type: Bug
Affects Versions: 1.5.1
Reporter: Jie Yu
I observed the following stack trace for the mesos agent 1.5.1 on CoreOS.
What I don't understand is that how is this possible. Both re-entrant and
non-reentrant version of the code are used in different threads.
{noformat}Thread 6 (LWP 3022):
#0 0x00007fd950a0034c in ?? () from target:/lib64/libpthread.so.0
#1 0x00007fd9509f9cf5 in pthread_mutex_lock () from
target:/lib64/libpthread.so.0
#2 0x00007fd9535028af in mesos::internal::fs::MountTable::read(std::string
const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#3 0x00007fd9534dc416 in cgroups::subsystems(std::string const&) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#4 0x00007fd9534dd13f in cgroups::mounted(std::string const&, std::string
const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#5 0x00007fd9534ddd98 in cgroups::verify(std::string const&, std::string
const&, std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#6 0x00007fd9534df815 in cgroups::read(std::string const&, std::string const&,
std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#7 0x00007fd9534e22b9 in cgroups::memory::usage_in_bytes(std::string const&,
std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#8 0x00007fd953557ca4 in
mesos::internal::slave::MemorySubsystemProcess::usage(mesos::ContainerID
const&, std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#9 0x00007fd95354b91b in lambda::CallableOnce<void
(process::ProcessBase*)>::CallableFn<lambda::internal::Partial<process::Future<mesos::ResourceStatistics>
process::dispatch<mesos::ResourceStatistics,
mesos::internal::slave::SubsystemProcess, mesos::ContainerID const&,
std::string const&, mesos::ContainerID const&, std::string
const&>(process::PID<mesos::internal::slave::SubsystemProcess> const&,
process::Future<mesos::ResourceStatistics>
(mesos::internal::slave::SubsystemProcess::*)(mesos::ContainerID const&,
std::string const&), mesos::ContainerID const&, std::string
const&)::{lambda(std::unique_ptr<process::Promise<mesos::ResourceStatistics>,
std::default_delete<process::Promise<mesos::ResourceStatistics> > >,
mesos::ContainerID&&, std::string&&, process::ProcessBase*)#1},
std::unique_ptr<process::Promise<mesos::ResourceStatistics>,
std::default_delete<process::Promise<mesos::ResourceStatistics> > >,
mesos::ContainerID, std::string, std::_Placeholder<1> >
>::operator()(process::ProcessBase*&&) && () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#10 0x00007fd953d48331 in
process::ProcessBase::consume(process::DispatchEvent&&) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#11 0x00007fd953d5ed9c in
process::ProcessManager::resume(process::ProcessBase*) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#12 0x00007fd953d645a6 in
std::thread::_Impl<std::_Bind_simple<process::ProcessManager::init_threads()::{lambda()#1}
()> >::_M_run() () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#13 0x00007fd950f13191 in ?? () from target:/lib64/libstdc++.so.6
#14 0x00007fd9509f74f0 in ?? () from target:/lib64/libpthread.so.0
#15 0x00007fd950737aed in clone () from target:/lib64/libc.so.6
Thread 5 (LWP 3021):
#0 0x00007fd9506bcff0 in _IO_file_read () from target:/lib64/libc.so.6
#1 0x00007fd9506bdcd0 in _IO_file_underflow () from target:/lib64/libc.so.6
#2 0x00007fd9506becc1 in _IO_default_uflow () from target:/lib64/libc.so.6
#3 0x00007fd9506b21d2 in _IO_getline_info () from target:/lib64/libc.so.6
#4 0x00007fd9506bbce6 in fgets_unlocked () from target:/lib64/libc.so.6
#5 0x00007fd950730e9e in getmntent_r () from target:/lib64/libc.so.6
#6 0x00007fd9535028c1 in mesos::internal::fs::MountTable::read(std::string
const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#7 0x00007fd9534dc416 in cgroups::subsystems(std::string const&) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#8 0x00007fd9534dd13f in cgroups::mounted(std::string const&, std::string
const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#9 0x00007fd9534ddd98 in cgroups::verify(std::string const&, std::string
const&, std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#10 0x00007fd9534df815 in cgroups::read(std::string const&, std::string const&,
std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#11 0x00007fd9534e2be7 in cgroups::blkio::readEntries(std::string const&,
std::string const&, std::string const&) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#12 0x00007fd9534e3a3d in cgroups::blkio::cfq::io_serviced(std::string const&,
std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#13 0x00007fd95354ddff in
mesos::internal::slave::BlkioSubsystemProcess::usage(mesos::ContainerID const&,
std::string const&) () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#14 0x00007fd95354b91b in lambda::CallableOnce<void
(process::ProcessBase*)>::CallableFn<lambda::internal::Partial<process::Future<mesos::ResourceStatistics>
process::dispatch<mesos::ResourceStatistics,
mesos::internal::slave::SubsystemProcess, mesos::ContainerID const&,
std::string const&, mesos::ContainerID const&, std::string
const&>(process::PID<mesos::internal::slave::SubsystemProcess> const&,
process::Future<mesos::ResourceStatistics>
(mesos::internal::slave::SubsystemProcess::*)(mesos::ContainerID const&,
std::string const&), mesos::ContainerID const&, std::string
const&)::{lambda(std::unique_ptr<process::Promise<mesos::ResourceStatistics>,
std::default_delete<process::Promise<mesos::ResourceStatistics> > >,
mesos::ContainerID&&, std::string&&, process::ProcessBase*)#1},
std::unique_ptr<process::Promise<mesos::ResourceStatistics>,
std::default_delete<process::Promise<mesos::ResourceStatistics> > >,
mesos::ContainerID, std::string, std::_Placeholder<1> >
>::operator()(process::ProcessBase*&&) && () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#15 0x00007fd953d48331 in
process::ProcessBase::consume(process::DispatchEvent&&) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#16 0x00007fd953d5ed9c in
process::ProcessManager::resume(process::ProcessBase*) () from
target:/opt/mesosphere/lib/libmesos-1.5.1.so
#17 0x00007fd953d645a6 in
std::thread::_Impl<std::_Bind_simple<process::ProcessManager::init_threads()::{lambda()#1}
()> >::_M_run() () from target:/opt/mesosphere/lib/libmesos-1.5.1.so
#18 0x00007fd950f13191 in ?? () from target:/lib64/libstdc++.so.6
#19 0x00007fd9509f74f0 in ?? () from target:/lib64/libpthread.so.0
#20 0x00007fd950737aed in clone () from target:/lib64/libc.so.6
{noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)