Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: 521c75a865409cb6cfd31734452e5af71722031f https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/521c75a865409cb6cfd31734452e5af71722031f Author: Nicolas Cellier <[hidden email]> Date: 2019-09-21 (Sat, 21 Sep 2019) Changed paths: M platforms/iOS/plugins/SoundPlugin/sqSqueakSoundCoreAudio.m Log Message: ----------- Minor fix in iOS sound plugin Two things: 1) according to https://developer.apple.com/documentation/audiotoolbox/kaudioqueueproperty_isrunning the property is a UInt32, not a sqInt (a sqInt can be 64 bits long, thus might be not entirely set) 2) nothing tells that the value is a valid boolean value, only that is running if != 0 if I compile with -fsanitize=undefined, i get this: >Process 5149 stopped >* thread #9, name = 'com.apple.coreaudio.AQClient', stop reason = Invalid bool load > frame #0: 0x000000010090b230 libclang_rt.ubsan_osx_dynamic.dylib`__ubsan_on_report > libclang_rt.ubsan_osx_dynamic.dylib`__ubsan_on_report: > -> 0x10090b230 <+0>: pushq %rbp > 0x10090b231 <+1>: movq %rsp, %rbp > 0x10090b234 <+4>: popq %rbp > 0x10090b235 <+5>: retq >Target 0: (Squeak) stopped. >(lldb) bt >* thread #9, name = 'com.apple.coreaudio.AQClient', stop reason = Invalid bool load > * frame #0: 0x000000010090b230 libclang_rt.ubsan_osx_dynamic.dylib`__ubsan_on_report > frame #1: 0x0000000100905f6c libclang_rt.ubsan_osx_dynamic.dylib`__ubsan::Diag::~Diag() + 140 > frame #2: 0x0000000100909ab9 libclang_rt.ubsan_osx_dynamic.dylib`handleLoadInvalidValue(__ubsan::InvalidValueData*, unsigned long, __ubsan::ReportOptions) + 505 > frame #3: 0x00000001009098b4 libclang_rt.ubsan_osx_dynamic.dylib`__ubsan_handle_load_invalid_value + 68 > frame #4: 0x00000001004f36ef Squeak`-[sqSqueakSoundCoreAudio setOutputIsRunning:](self=0x00000001021183a0, _cmd="setOutputIsRunning:", outputIsRunning=110) at sqSqueakSoundCoreAudio.h:0 > frame #5: 0x00000001004ecc6e Squeak`MyAudioQueuePropertyListener(inUserData=0x00000001021183a0, inAQ=0x000000000141d000, inID=1634824814) at sqSqueakSoundCoreAudio.m:90 > frame #7: 0x00007fff412fed65 AudioToolbox`AQClientCallbackMessageReader::DispatchCallbacks(void const*, unsigned long) + 195 > frame #8: 0x00007fff412e6ac5 AudioToolbox`ClientAudioQueue::FetchAndDeliverPendingCallbacks(unsigned int) + 291 > frame #9: 0x00007fff412e6921 AudioToolbox`AQCallbackReceiver_CallbackNotificationsAvailable + 121 > frame #10: 0x00007fff412e66a5 AudioToolbox`_XCallbackNotificationsAvailable + 33 > frame #11: 0x00007fff412e64b2 AudioToolbox`mshMIGPerform + 230 > frame #12: 0x00007fff42967f39 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41 > frame #13: 0x00007fff42967e85 CoreFoundation`__CFRunLoopDoSource1 + 533 > frame #14: 0x00007fff4295fa40 CoreFoundation`__CFRunLoopRun + 2848 > frame #15: 0x00007fff4295ec93 CoreFoundation`CFRunLoopRunSpecific + 483 > frame #16: 0x00007fff412c340a AudioToolbox`GenericRunLoopThread::Entry(void*) + 158 I think it's benign, but let's not depend on UB... |
Free forum by Nabble | Edit this page |