OK, spot the bug in the code:
object m_lockObject = new object();
object[] m_collection = null;
public object[] GetCollection() {
lock (m_lockObject) {
if (m_collection != null) {
// already initialized
return m_collection;
}
else {
// needs to be initialized
m_collection = new object[5];
initialize(m_collection);
return m_collection;
}
}
}
.. the bug is that a second call could come
after m_collection is new'd up, but
before it's initialized, resulting in an empty collection being returned. The first call works, the second call
sometimes fails, and the third call onwards likely succeeds. Bugs like this can be a pain to track down as, depending on what these objects do, the symptoms will appear really strange...
0 comments:
Post a Comment