Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Crashes in release mode (debug works fine) #43

Closed
jnsmalm opened this issue Jun 17, 2016 · 22 comments
Closed

Crashes in release mode (debug works fine) #43

jnsmalm opened this issue Jun 17, 2016 · 22 comments

Comments

@jnsmalm
Copy link

jnsmalm commented Jun 17, 2016

I have created a small sample program in C++ trying to play sounds with OpenAL Soft. The program crashes when compiled in release mode, when compiled in debug mode it works. I'm on OS X using 1.17.2

I get this error message:

SoundTest(28958,0x70000021d000) malloc: *** error for object 0x7fbdd26062c8: incorrect checksum for freed object - object was probably modified after being freed.

The source of the sample program can be found at:
http://stackoverflow.com/questions/37889119/openal-soft-crashes-in-release-mode-debug-works-fine

@HolyBlackCat
Copy link

HolyBlackCat commented Jul 4, 2016

I'm getting same error on Android. Release mode crashes at alBufferData() because of heap corruption, but RelWithDebugInfo and Debug work fine. http://stackoverflow.com/questions/38165186/openal-application-crashes-hangs-when-i-pass-non-nullptr-to-albufferdata-fro

@kcat
Copy link
Owner

kcat commented Jul 4, 2016

Does something like Valgrind exist for OSX or Android? That would help pinpoint memory corruption errors. alBufferData is working fine for both Linux and Windows, which uses the exact same code, and I'm not getting other reports of problems like this from other OSX or Android users, making me think it's something peculiar with your setups (not that there isn't anything I can do to fix/workaround the problem, but I do need to narrow down where the problem is to try to fix it). I've also tried both your programs with both GCC 4.9.2 and Clang 3.5.2, and they work fine.

Since you both seem to be using Clang (IIRC, that's what Apple uses by default), maybe its address sanitizer can help pinpoint the problem. I've never used it myself before though, so I don't know exactly how it works.

RelWithDebugInfo and Debug work fine

It's RelWithDebInfo, not RelWithDebugInfo. The latter isn't a standard build type, so it would be the same as building without any optimizations or debug info.

@sriharshachilakapati
Copy link

As far as I know, android ndk supports only two build types, DEBUG and RELEASE. I think the error is somewhere else, but am not sure about it.

@HolyBlackCat
Copy link

@sriharshachilakapati I'm cross-compiling OpenAL as a shared lib using cmake and toolchains from ndk. I'm talking about cmake build types, not ndk ones.

@kcat Sorry, my mistake. RelWithDebInfo crashes too. I'm going to try to use valgrind or clang's address sanitizer and I'll inform you if I succeed.

@w3sip
Copy link

w3sip commented Aug 17, 2016

Getting the same problem -- OSX as well 10.10.5, llvm 7.0.2, cmake 3.4, 32-bit build. Did you guys ever figure this out?

@HolyBlackCat
Copy link

I failed to set up clang's asan, so I'm just using random string as a build type for now. For some reason empty string seemed to have a different effect.

@slobodin
Copy link

slobodin commented Aug 20, 2016

Having the same problem in Android release build as well as in RelWithDebInfo, compiler is clang.
Crashes after calling alBufferData when I do streaming from ogg from different thread. Tried to move this code to the main thread - got the same result. Stacktraces are random, application may crash in different places after calling alBufferData (e.g. it suddenly crashes in OpenAL code, physics code, UI code, weird).

Streaming code works well on iOS (using Apple implementation of OpenAL)

@slobodin
Copy link

Found that LoadData in alBuffer.c calls realloc with newsize equal to 0, because NewBytes is 0

@kcat
Copy link
Owner

kcat commented Aug 20, 2016

That shouldn't be a problem, since it'll either act like malloc(0) or free(ptr) depending if a non-NULL pointer is given. Either way, it's a pointer OpenAL Soft won't access as its 0 sized, and will pass to either realloc or free later, both of which are valid with what may be returned.

@jnsmalm
Copy link
Author

jnsmalm commented Aug 26, 2016

I ran my simple program with Valgrind and got the output below (I'm not sure what it means I have never used Valgrind before). This is the full stack I got:

`==6832== Memcheck, a memory error detector
==6832== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==6832== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==6832== Command: bin/SoundTest
==6832==
==6832== Conditional jump or move depends on uninitialised value(s)
==6832== at 0x7FFF5FC23DC7: bcmp (in /usr/lib/dyld)
==6832== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==6832==
==6832== Use of uninitialised value of size 8
==6832== at 0x7FFF5FC23DDF: bcmp (in /usr/lib/dyld)
==6832== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==6832==
==6832== Use of uninitialised value of size 8
==6832== at 0x7FFF5FC23DE4: bcmp (in /usr/lib/dyld)
==6832== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==6832==
==6832== Conditional jump or move depends on uninitialised value(s)
==6832== at 0x7FFF5FC11AF7: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==6832== by 0x7FFF5FC0EA4D: ImageLoader::recursiveLoadLibraries(ImageLoader::LinkContext const&, bool, ImageLoader::RPathChain const&) (in /usr/lib/dyld)
==6832==
--6832-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option
--6832-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 2 times)
--6832-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 4 times)
==6832== Conditional jump or move depends on uninitialised value(s)
==6832== at 0x1000FC655: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent_, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==6832== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==6832== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==6832== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==6832== by 0x100002DA2: main (main.cpp:12)
==6832==
==6832== Conditional jump or move depends on uninitialised value(s)
==6832== at 0x1001FFC9B: AudioComponentPluginLoader::ScanForPlugins(unsigned int, bool) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001FEBEC: AudioComponentPluginMgr::initLoader(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001FEB7A: AudioComponentPluginMgr::prepare(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1000FC742: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent*, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==6832== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==6832== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==6832== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==6832== by 0x100002DA2: main (main.cpp:12)
==6832==

valgrind: m_syswrap/syswrap-amd64-darwin.c:507 (void wqthread_hijack(Addr, Addr, Addr, Addr, Int, Addr)): Assertion 'tst->os_state.pthread - magic_delta == self' failed.

host stacktrace:
==6832== at 0x23804FEF3: ???
==6832== by 0x23805030C: ???
==6832== by 0x2380502EA: ???
==6832== by 0x23810CF69: ???

sched status:
running_tid=0

Thread 1: status = VgTs_WaitSys (lwpid 2567)
==6832== at 0x101EC8C4A: open$NOCANCEL (in /usr/lib/system/libsystem_kernel.dylib)
==6832== by 0x101DA55D0: opendir2$INODE64 (in /usr/lib/system/libsystem_c.dylib)
==6832== by 0x1000F6925: AudioComponentPluginLoader::ScanForPluginsInDirectory(char const
) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001FFD44: AudioComponentPluginLoader::ScanForPlugins(unsigned int, bool) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001FEBEC: AudioComponentPluginMgr::initLoader(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001FEB7A: AudioComponentPluginMgr::prepare(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1000FC742: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent
, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==6832== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==6832== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==6832== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==6832== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==6832== by 0x100002DA2: main (main.cpp:12)

Thread 2: status = VgTs_WaitSys (lwpid 4099)
==6832== at 0x101EC95E2: __workq_kernreturn (in /usr/lib/system/libsystem_kernel.dylib)
==6832== by 0x70014: ???
==6832== by 0x1: ???
==6832== by 0x700000397B9F: ???
==6832== by 0x16F: ???

Thread 3: status = VgTs_WaitSys (lwpid 5635)
==6832== at 0x101EC916A: sendto (in /usr/lib/system/libsystem_kernel.dylib)
==6832== by 0x10200F5F5: _simple_asl_send (in /usr/lib/system/libsystem_platform.dylib)
==6832== by 0x10200F3F5: _simple_asl_log_prog (in /usr/lib/system/libsystem_platform.dylib)
==6832== by 0x101CDCD9B: _dispatch_log (in /usr/lib/system/libdispatch.dylib)
==6832== by 0x101CCC1A9: _dispatch_mgr_invoke (in /usr/lib/system/libdispatch.dylib)
==6832== by 0x101CCBDCC: _dispatch_mgr_thread (in /usr/lib/system/libdispatch.dylib)

Note: see also the FAQ in the source distribution.
It contains workarounds to several common problems.
In particular, if Valgrind aborted or crashed after
identifying problems in your program, there's a good chance
that fixing those problems will prevent Valgrind aborting or
crashing, especially if it happened in m_mallocfree.c.

If that doesn't help, please report this bug to: www.valgrind.org

In the bug report, send all the above text, the valgrind
version, and what OS and version you are using. Thanks.`

@jnsmalm
Copy link
Author

jnsmalm commented Aug 26, 2016

Also this is the clang I'm using:

Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

@kcat
Copy link
Owner

kcat commented Aug 27, 2016

That appears to be crashing deep within OSX while trying to find a device component to open. Though it looks like valgrind itself is crashing with Assertion 'tst->os_state.pthread - magic_delta == self' failed.. Does the same thing happen if you try it again?

@jnsmalm
Copy link
Author

jnsmalm commented Aug 27, 2016

Sometimes when running it, it takes a much longer time to complete and I get this (yes, it looks like the same output):

==7477== Memcheck, a memory error detector
==7477== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==7477== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==7477== Command: bin/SoundTest
==7477==
==7477== Conditional jump or move depends on uninitialised value(s)
==7477== at 0x7FFF5FC23DC7: bcmp (in /usr/lib/dyld)
==7477== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==7477==
==7477== Use of uninitialised value of size 8
==7477== at 0x7FFF5FC23DDF: bcmp (in /usr/lib/dyld)
==7477== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==7477==
==7477== Use of uninitialised value of size 8
==7477== at 0x7FFF5FC23DE4: bcmp (in /usr/lib/dyld)
==7477== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==7477==
==7477== Conditional jump or move depends on uninitialised value(s)
==7477== at 0x7FFF5FC11AF7: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==7477== by 0x7FFF5FC0EA4D: ImageLoader::recursiveLoadLibraries(ImageLoader::LinkContext const&, bool, ImageLoader::RPathChain const&) (in /usr/lib/dyld)
==7477==
--7477-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option
--7477-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 2 times)
--7477-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 4 times)
==7477== Conditional jump or move depends on uninitialised value(s)
==7477== at 0x1000FC655: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent_, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==7477== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==7477== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==7477== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==7477== by 0x100002DA2: main (main.cpp:12)
==7477==
==7477== Conditional jump or move depends on uninitialised value(s)
==7477== at 0x1001FFC9B: AudioComponentPluginLoader::ScanForPlugins(unsigned int, bool) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001FEBEC: AudioComponentPluginMgr::initLoader(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001FEB7A: AudioComponentPluginMgr::prepare(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1000FC742: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent*, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==7477== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==7477== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==7477== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==7477== by 0x100002DA2: main (main.cpp:12)
==7477==
--7477-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 8 times)
--7477-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 16 times)

valgrind: m_syswrap/syswrap-amd64-darwin.c:507 (void wqthread_hijack(Addr, Addr, Addr, Addr, Int, Addr)): Assertion 'tst->os_state.pthread - magic_delta == self' failed.

host stacktrace:
==7477== at 0x23804FEF3: ???

sched status:
running_tid=0

Thread 1: status = VgTs_WaitSys (lwpid 2567)
==7477== at 0x101EC2FAE: semaphore_wait_trap (in /usr/lib/system/libsystem_kernel.dylib)
==7477== by 0x101CCE6A1: _dispatch_group_wait_slow (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x1005B6EED: CFPREFERENCES_IS_WAITING_FOR_CFPREFSD (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005B6947: -[CFPrefsSearchListSource generationCountFromListOfSources:count:](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005B6213: -[CFPrefsSearchListSource alreadylocked_copyDictionary](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005B5E5B: -[CFPrefsSearchListSource alreadylocked_copyValueForKey:](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005B5DEB: ___CFPreferencesCopyAppValueWithContainer_block_invoke (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005ADB0F: +[CFPrefsSearchListSource withSearchListForIdentifier:container:perform:](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005AD866: _CFPreferencesCopyAppValueWithContainer (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005CD8C2: ___CFBundleCopyUserLanguages_block_invoke (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x101CC640A: _dispatch_client_callout (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x101CC6302: dispatch_once_f (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x1005CCE2A: _CFBundleCopyLanguageSearchListInBundle (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005CCA82: _copyQueryTable (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005CC371: _copyResourceURLsFromBundle (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005CB8C5: _CFBundleCopyFindResources (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005CB3FF: CFBundleCopyResourceURL (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005CB2A2: CFBundleGetLocalInfoDictionary (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1005E32B0: CFBundleGetValueForInfoDictionaryKey (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==7477== by 0x1001FFE6E: AudioComponentPluginLoader::QueryBundle(_CFURL const, std::__1::function<void (_CFURL const, CFBundle, AudioComponentRegistrationInfo const&, CFArray const&)>) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1000F69E8: AudioComponentPluginLoader::ScanForPluginsInDirectory(char const
) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001FFDA1: AudioComponentPluginLoader::ScanForPlugins(unsigned int, bool) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001FEBEC: AudioComponentPluginMgr::initLoader(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001FEB7A: AudioComponentPluginMgr::prepare(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1000FC742: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent
, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==7477== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==7477== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==7477== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==7477== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==7477== by 0x100002DA2: main (main.cpp:12)

Thread 2: status = VgTs_WaitSys (lwpid 6147)
==7477== at 0x101EC95E2: __workq_kernreturn (in /usr/lib/system/libsystem_kernel.dylib)
==7477== by 0x102020577: _pthread_wqthread (in /usr/lib/system/libsystem_pthread.dylib)
==7477== by 0x10201E340: start_wqthread (in /usr/lib/system/libsystem_pthread.dylib)

Thread 3: status = VgTs_WaitSys (lwpid 5635)
==7477== at 0x101EC95E2: __workq_kernreturn (in /usr/lib/system/libsystem_kernel.dylib)
==7477== by 0x102020066: _pthread_workqueue_addthreads (in /usr/lib/system/libsystem_pthread.dylib)
==7477== by 0x101CC973E: _dispatch_queue_wakeup_global_slow (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x101CCB1FF: _dispatch_queue_drain (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x101CCC1DE: _dispatch_mgr_queue_drain (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x101CCC0B9: _dispatch_mgr_invoke (in /usr/lib/system/libdispatch.dylib)
==7477== by 0x101CCBDCC: _dispatch_mgr_thread (in /usr/lib/system/libdispatch.dylib)

Thread 4: status = VgTs_WaitSys (lwpid 7171)
==7477== at 0x101EC95E2: __workq_kernreturn (in /usr/lib/system/libsystem_kernel.dylib)
==7477== by 0x70018: ???
==7477== by 0x3: ???
==7477== by 0x700000397D0F: ???
==7477== by 0x2DF: ???

Note: see also the FAQ in the source distribution.
It contains workarounds to several common problems.
In particular, if Valgrind aborted or crashed after
identifying problems in your program, there's a good chance
that fixing those problems will prevent Valgrind aborting or
crashing, especially if it happened in m_mallocfree.c.

If that doesn't help, please report this bug to: www.valgrind.org

In the bug report, send all the above text, the valgrind
version, and what OS and version you are using. Thanks.

@jnsmalm
Copy link
Author

jnsmalm commented Aug 27, 2016

I found that there was a problem with valgrind 3.11.10 on OS X 10.11. I applied the patch from https://bugs.kde.org/show_bug.cgi?id=354883. I ran valgrind again and got this output:

==30285== Memcheck, a memory error detector
==30285== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==30285== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==30285== Command: bin/SoundTest
==30285==
==30285== Conditional jump or move depends on uninitialised value(s)
==30285== at 0x7FFF5FC23DC7: bcmp (in /usr/lib/dyld)
==30285== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==30285==
==30285== Use of uninitialised value of size 8
==30285== at 0x7FFF5FC23DDF: bcmp (in /usr/lib/dyld)
==30285== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==30285==
==30285== Use of uninitialised value of size 8
==30285== at 0x7FFF5FC23DE4: bcmp (in /usr/lib/dyld)
==30285== by 0x7FFF5FC11AF4: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==30285==
==30285== Conditional jump or move depends on uninitialised value(s)
==30285== at 0x7FFF5FC11AF7: ImageLoaderMachO::validateFirstPages(linkedit_data_command const_, int, unsigned char const_, unsigned long, long long, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC16D6A: ImageLoaderMachOCompressed::instantiateFromFile(char const_, int, unsigned char const_, unsigned long, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, linkedit_data_command const_, encryption_info_command const_, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC10C5E: ImageLoaderMachO::instantiateFromFile(char const_, int, unsigned char const_, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC038C2: dyld::loadPhase6(int, stat const&, char const_, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC085BF: dyld::loadPhase5(char const_, char const_, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC082DF: dyld::loadPhase4(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC08044: dyld::loadPhase3(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC07799: dyld::loadPhase1(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0347A: dyld::loadPhase0(char const
, char const_, dyld::LoadContext const&, std::_1::vector<char const, std::__1::allocator<char const*> >) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0315E: dyld::load(char const
, dyld::LoadContext const&) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC088F9: dyld::libraryLocator(char const_, bool, char const_, ImageLoader::RPathChain const_) (in /usr/lib/dyld)
==30285== by 0x7FFF5FC0EA4D: ImageLoader::recursiveLoadLibraries(ImageLoader::LinkContext const&, bool, ImageLoader::RPathChain const&) (in /usr/lib/dyld)
==30285==
--30285-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option
--30285-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 2 times)
--30285-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 4 times)
==30285== Conditional jump or move depends on uninitialised value(s)
==30285== at 0x1000FC655: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent_, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==30285== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==30285== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==30285== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==30285== by 0x100002DA2: main (main.cpp:12)
==30285==
==30285== Conditional jump or move depends on uninitialised value(s)
==30285== at 0x1001FFC9B: AudioComponentPluginLoader::ScanForPlugins(unsigned int, bool) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001FEBEC: AudioComponentPluginMgr::initLoader(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001FEB7A: AudioComponentPluginMgr::prepare(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1000FC742: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent*, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==30285== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==30285== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==30285== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==30285== by 0x100002DA2: main (main.cpp:12)
==30285==
--30285-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 8 times)
--30285-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 16 times)

Memcheck: mc_main.c:1730 (void set_address_range_perms(Addr, SizeT, UWord, UWord)): Assertion '! sr_isError(sres)' failed.
Memcheck: SecMap valgrind munmap failure

host stacktrace:
==30285== at 0x23804FEF3: ???
==30285== by 0x23805030C: ???
==30285== by 0x2380502EA: ???
==30285== by 0x238007E33: ???
==30285== by 0x238006E25: ???
==30285== by 0x2380E15DE: ???
==30285== by 0x238105ADF: ???
==30285== by 0x2380DF67C: ???
==30285== by 0x2380DDF70: ???
==30285== by 0x2380DBEA8: ???
==30285== by 0x2380EE6EF: ???
==30285== by 0x2380EE99A: ???

sched status:
running_tid=2

Thread 1: status = VgTs_WaitSys (lwpid 2567)
==30285== at 0x101EC2FAE: semaphore_wait_trap (in /usr/lib/system/libsystem_kernel.dylib)
==30285== by 0x101CCE6A1: _dispatch_group_wait_slow (in /usr/lib/system/libdispatch.dylib)
==30285== by 0x1005B6EED: CFPREFERENCES_IS_WAITING_FOR_CFPREFSD (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005B6947: -[CFPrefsSearchListSource generationCountFromListOfSources:count:](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005B6213: -[CFPrefsSearchListSource alreadylocked_copyDictionary](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005B5E5B: -[CFPrefsSearchListSource alreadylocked_copyValueForKey:](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005B5DEB: ___CFPreferencesCopyAppValueWithContainer_block_invoke (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005ADB0F: +[CFPrefsSearchListSource withSearchListForIdentifier:container:perform:](in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005AD866: _CFPreferencesCopyAppValueWithContainer (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005CD8C2: ___CFBundleCopyUserLanguages_block_invoke (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x101CC640A: _dispatch_client_callout (in /usr/lib/system/libdispatch.dylib)
==30285== by 0x101CC6302: dispatch_once_f (in /usr/lib/system/libdispatch.dylib)
==30285== by 0x1005CCE2A: _CFBundleCopyLanguageSearchListInBundle (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005CCA82: _copyQueryTable (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005CC371: _copyResourceURLsFromBundle (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005CB8C5: _CFBundleCopyFindResources (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005CB3FF: CFBundleCopyResourceURL (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005CB2A2: CFBundleGetLocalInfoDictionary (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1005E32B0: CFBundleGetValueForInfoDictionaryKey (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==30285== by 0x1001FFE6E: AudioComponentPluginLoader::QueryBundle(_CFURL const, std::__1::function<void (_CFURL const, CFBundle, AudioComponentRegistrationInfo const&, CFArray const&)>) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1000F69E8: AudioComponentPluginLoader::ScanForPluginsInDirectory(char const
) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001FFDA1: AudioComponentPluginLoader::ScanForPlugins(unsigned int, bool) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001FEBEC: AudioComponentPluginMgr::initLoader(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001FEB7A: AudioComponentPluginMgr::prepare(unsigned int) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1000FC742: AudioComponentPluginMgr::FindNext(OpaqueAudioComponent
, AudioComponentDescription const&) (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x1001F953C: AudioComponentFindNext (in /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox)
==30285== by 0x100073D64: ca_open_playback (coreaudio.c:157)
==30285== by 0x10007251B: PlaybackWrapper_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==30285== by 0x1000722C4: PlaybackWrapper_ALCbackend_open (in /Users/jens/Library/Caches/CLion2016.1/cmake/generated/SoundTest-768a375/768a375/Debug/openal-soft/libopenal.1.17.2.dylib)
==30285== by 0x100047C3B: alcOpenDevice (ALc.c:3476)
==30285== by 0x100002DA2: main (main.cpp:12)

Thread 2: status = VgTs_Runnable (lwpid 5891)
==30285== at 0x101EC848A: __bsdthread_terminate (in /usr/lib/system/libsystem_kernel.dylib)
==30285== by 0x10202218C: _pthread_exit (in /usr/lib/system/libsystem_pthread.dylib)
==30285== by 0x102020581: _pthread_wqthread (in /usr/lib/system/libsystem_pthread.dylib)
==30285== by 0x10201E340: start_wqthread (in /usr/lib/system/libsystem_pthread.dylib)

Thread 3: status = VgTs_Yielding (lwpid 5635)
==30285== at 0x101CCC165: _dispatch_mgr_invoke (in /usr/lib/system/libdispatch.dylib)
==30285== by 0x101CCBDCC: _dispatch_mgr_thread (in /usr/lib/system/libdispatch.dylib)

Note: see also the FAQ in the source distribution.
It contains workarounds to several common problems.
In particular, if Valgrind aborted or crashed after
identifying problems in your program, there's a good chance
that fixing those problems will prevent Valgrind aborting or
crashing, especially if it happened in m_mallocfree.c.

If that doesn't help, please report this bug to: www.valgrind.org

In the bug report, send all the above text, the valgrind
version, and what OS and version you are using. Thanks.

@jnsmalm
Copy link
Author

jnsmalm commented Aug 27, 2016

It would be interesting to see other people's (that's having the same crash) output using valgrind.

@Spasi
Copy link

Spasi commented Aug 29, 2016

Started seeing this in LWJGL after switching our CI to the latest Xcode version. I used Travis CI to test different versions, results:

  • Seeing crashes with Xcode 8beta6.
  • Seeing crashes with Xcode 7.3.1, LLVM version 7.3.0 (clang-703.0.31). (build log)
  • No crashes with Xcode 7.2.1, LLVM version 7.0.2 (clang-700.1.81). (build log)
  • No crashes with older versions (tested down to Xcode 6.1).

On Xcode 7.3.1, I'm getting no crashes with Debug and MinSizeRel builds. Release and RelWithDebInfo builds crash.

@jnsmalm
Copy link
Author

jnsmalm commented Sep 6, 2016

So the solution is to go back to Xcode 7.2.1? No other way to fix it?

@kcat
Copy link
Owner

kcat commented Sep 6, 2016

It seems using the MinSizeRel build type works around it too, according to what Spasi said. MinSizeRel isn't a bad build type to use, as it has optimizations and keeps the file size down (and sometimes optimizing for size can be about as good as full optimizations, because reducing the code footprint keeps down redundant code, which helps make it run faster).

Otherwise, it's probably a problem with Clang's optimizer. I've finally been able to reproduce a Clang-related crash here on Linux, and it seems to be an optimization problem. If I simply trace certain local variables at specific points, it works, but if I don't trace those variables, it crashes. For example, if I do this in LoadData:

    //ERR("enum chans: 0x%x, type: 0x%x\n", DstChannels, DstType);
    NewChannels = ChannelsFromFmt(DstChannels);
    NewBytes = BytesFromFmt(DstType);
    ERR("chans: %u, type: %u\n", NewChannels, NewBytes);

and load a 16-bit mono sound, it prints out:

AL lib: (EE) LoadData: chans: 1, type: 1

before crashing, which is obviously wrong (the 'type' size should be 2 for 16-bit samples). But if I simply uncomment that first line and rebuild, I get:

AL lib: (EE) LoadData: enum chans: 0x1500, type: 0x1400
AL lib: (EE) LoadData: chans: 1, type: 2

which is correct, and it no longer crashes.

It seems removing __attribute__((const)) from certain functions also stopped the crashing without the need for the trace statements. I've pushed that workaround, can you check to see if it's working for you now?

@Spasi
Copy link

Spasi commented Sep 6, 2016

can you check to see if it's working for you now?

Now everything works fine here with an Xcode 7.3.1 release build. Thanks!

@jnsmalm
Copy link
Author

jnsmalm commented Sep 8, 2016

can you check to see if it's working for you now?

Seems to work fine, good job! I didn't get a crash, but I got this message when playing the sound:

AL lib: (EE) GetProcPath: Failed to link /proc/self/file: No such file or directory

What does it mean?

@kcat
Copy link
Owner

kcat commented Sep 8, 2016

That means your system doesn't have either /proc/self/exe or /proc/self/file, which is used to find the binary's directory to look for an app-specific config file (mostly just for self-contained apps that you may want to have custom settings for). It's harmless as long as you don't need it automatically picking up app-specific configs I should probably downgrade that to a warning, though.

@kcat
Copy link
Owner

kcat commented Sep 14, 2016

Closing as fixed by commit a758cc8.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants