[lldb-dev] Assert in DYLDRendezvous::UpdateSOEntries
Michael Sartain
mikesart at gmail.com
Thu Jun 13 18:50:30 PDT 2013
I just hit the below assert on line 138 stepping over a dlclose().
120| bool
121| DYLDRendezvous::UpdateSOEntries()
122| {
123| SOEntry entry;
124|
125| if (m_current.map_addr == 0)
126| return false;
127|
128| // When the previous and current states are consistent this is the
first
129| // time we have been asked to update. Just take a snapshot of the
currently
130| // loaded modules.
131| if (m_previous.state == eConsistent && m_current.state ==
eConsistent)
132| return TakeSnapshot(m_soentries);
133|
134| // If we are about to add or remove a shared object clear out the
current
135| // state and take a snapshot of the currently loaded images.
136| if (m_current.state == eAdd || m_current.state == eDelete)
137| {
138+> assert(m_previous.state == eConsistent);
139| m_soentries.clear();
140| m_added_soentries.clear();
141| m_removed_soentries.clear();
142| return TakeSnapshot(m_soentries);
143| }
It's called by this code in DYLDRendezvous::Resolve():
106| // The rendezvous was successfully read. Update our internal
state.
107| m_rendezvous_addr = info_addr;
108| m_previous = m_current;
109| m_current = info;
110|
111+> return UpdateSOEntries();
m_previous is being set to m_current and both are eDelete now, but that
assert above is claiming it should be eConsistent.
Is this a bogus assert, or is the Resolve() function messing with
m_previous when it shouldn't be?
-Mike
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20130613/99fcb681/attachment.html>
More information about the lldb-dev
mailing list