Jie Yu created MESOS-209:
----------------------------
Summary: A race bug in ProcessManager::spawn in libprocess.
Key: MESOS-209
URL: https://issues.apache.org/jira/browse/MESOS-209
Project: Mesos
Issue Type: Bug
Components: c++-api
Affects Versions: 0.9.0
Environment: All platforms.
Reporter: Jie Yu
Priority: Critical
This is a race bug found in ProcessManager::spawn in libprocess. Below is the
description of this bug.
------------------------------------------------------------------------------------------------------
UPID ProcessManager::spawn(ProcessBase* process, bool manage)
{
...
// Use the garbage collector if requested.
if (manage) {
dispatch(gc, &GarbageCollector::manage<ProcessBase>, process);
}
// Add process to the run queue (so 'initialize' will get invoked).
enqueue(process);
VLOG(2) << "Spawned process " << process->self();
return process->self();
}
------------------------------------------------------------------------------------------------------
If a user spawns a process which is very short and sets 'manage' to true. It is
likely that the pointer 'process' becomes a dangling pointer after enqueue(..)
is called. As a result, a random segfault will be thrown when 'process->self()'
is called.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira