Bug #1570

TTContainer : protect the observer table during subscription

Added by Théo de la Hogue about 6 years ago. Updated about 6 years ago.

Status:ClosedStart date:2013-04-15
Priority:NormalDue date:
Assignee:Théo de la Hogue% Done:

0%

Category:-Spent time:-
Target version:MVC for 0.6
Branch: OS:

Description

here is the crash log :

Thread 6 Crashed:
0 JamomaFoundation.dylib 0x0c2f1eaf std::__1::__hash_iterator<std::__1::__hash_node<std::__1::pair<long, TTValue>, void*>> std::__1::__hash_table<std::__1::pair<long, TTValue>, std::__1::__unordered_map_hasher<long, TTValue, std::__1::hash<long>, true>, std::__1::__unordered_map_equal<long, TTValue, std::__1::equal_to<long>, true>, std::__1::allocator<std::__1::pair<long, TTValue> > >::find<long>(long const&) + 159 (__hash_table:425)
1 JamomaFoundation.dylib 0x0c2f5334 TTHash::lookup(void
, TTValue&) + 132 (unordered_map:850)
2 JamomaFoundation.dylib 0x0c2f529f TTHash::lookup(TTSymbol const&, TTValue&) + 63 (TTHash.cpp:78)
3 JamomaModular.dylib 0x0c62ba20 TTContainerValueAttributeCallback(void*, TTValue&) + 560 (TTContainer.cpp:1243)
4 JamomaFoundation.dylib 0x0c2d7b11 TTCallback::notify(TTValue const&, TTValue&) + 65 (TTCallback.cpp:51)
5 JamomaFoundation.dylib 0x0c2ef03e TTObjectBase::sendMessage(TTSymbol const&, TTValue const&, TTValue&) + 446 (TTObjectBase.cpp:425)
6 JamomaFoundation.dylib 0x0c2fa987 TTList::iterateObjectsSendingMessage(TTSymbol const&, TTValue&) + 423 (TTList.cpp:311)
7 JamomaFoundation.dylib 0x0c2ef2d4 TTObjectBase::sendNotification(TTSymbol const&, TTValue const&) + 52 (TTObjectBase.cpp:481)
8 JamomaModular.dylib 0x0c62be69 TTContainerValueAttributeCallback(void*, TTValue&) + 1657 (TTContainer.cpp:1282)
9 JamomaFoundation.dylib 0x0c2d7b11 TTCallback::notify(TTValue const&, TTValue&) + 65 (TTCallback.cpp:51)
10 JamomaFoundation.dylib 0x0c2ef03e TTObjectBase::sendMessage(TTSymbol const&, TTValue const&, TTValue&) + 446 (TTObjectBase.cpp:425)
11 JamomaFoundation.dylib 0x0c2fa987 TTList::iterateObjectsSendingMessage(TTSymbol const&, TTValue&) + 423 (TTList.cpp:311)
12 JamomaFoundation.dylib 0x0c2ef2d4 TTObjectBase::sendNotification(TTSymbol const&, TTValue const&) + 52 (TTObjectBase.cpp:481)
13 JamomaModular.dylib 0x0c653526 TTData::returnValue() + 438 (TTDataTypedMethods.cpp:192)
14 JamomaModular.dylib 0x0c64eec8 TTData::setDecimalValue(TTValue const&) + 328 (TTDataTypedMethods.cpp:760)
15 JamomaFoundation.dylib 0x0c2edd85 TTObjectBase::setAttributeValue(TTSymbol const&, TTValue&) + 629 (TTObjectBase.cpp:201)
16 jcom.out~ 0x15904f6b TTObjectBase::setAttributeValue(TTSymbol const&, float const&) + 107 (TTObjectBase.h:257)
17 jcom.out~ 0x159042c2 out_update_amplitude(void*) + 194 (jcom.out.cpp:723)
18 com.cycling74.Max 0x00014d12 clock_execute + 54
19 com.cycling74.Max 0x0003aab6 sched_takepoll + 504
20 com.cycling74.Max 0x0003ab06 sched_poll + 26
21 com.cycling74.Max 0x00076758 systimer_pollaction + 18
22 com.cycling74.Max 0x00076a5a mactimer_isr + 108
23 com.apple.CoreServices.CarbonCore 0x950b10e0 TimerThread + 129
24 libsystem_c.dylib 0x96f0d5b7 _pthread_start + 344
25 libsystem_c.dylib 0x96ef7d4e thread_start + 34

History

#1 Updated by Théo de la Hogue about 6 years ago

  • Status changed from New to Closed

Actually the observers inside the TTContainer class (e.g. the jcom.model or jcom.view) weren't destroyed due to some old and useless #ifdef.
As those observers weren't destroyed they still send data back to a "ghost" TTContainer and it crashes.

Also available in: Atom PDF