Getting a segfault half of the time

My juce plugin segfaults half of the time when I start it up. Putting the core in gdb doesn’t find the place of the error.

#15 0x00007fcd29ddc002 __libc_start_main (libc.so.6 + 0x27002)
                    #16 0x00005570a093057e n/a (/Develop/GeoHead-alpha/Builds/LinuxMakefile/build/GeoHead-alpha + 0x7d57e)

Core was generated by `./GeoHead-alpha'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00005570a0d723cb in ?? ()

I don’t know how to use valgrind, and have no idea where to look. I wasn’t using git so I don’t know what change made the error. If any pros can take a look at it, it would be appreciated. I think it’s in the CreateWavetable class.

here is the code (cool concept I’ve never seen before):

I can upload the core files as well.

Normally for these kinds of bugs, I’d use the Address Sanitizer to try and find more information about the crash. You can enable Address Sanitizer by adding -fsanitize=address to your compile flags and your link flags, in your Projucer project. Then, rebuild your project and run it, ideally in a debugger. If the sanitizer detects any invalid memory usage, it’ll print some stack traces showing where the error ocurred, and where any memory regions involved were allocated/freed. The debugger should pause, too, allowing you to check the state of the application.

When I compile with -fsanitize-adress, it gives me the error

undefined reference to __asan_option_detect_stack_use after return`

No idea what this means…

Full error:

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `GeoHeadalphaAudioProcessor::GeoHeadalphaAudioProcessor()':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:16: undefined reference to `__asan_option_detect_stack_use_after_return'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:16: undefined reference to `__asan_stack_malloc_4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:23: undefined reference to `__asan_report_store_n'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:23: undefined reference to `__asan_report_store_n'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:35: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:31: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:30: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:29: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:31: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:32: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:32: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:32: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:32: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:33: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:33: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:33: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:33: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:34: undefined reference to `__asan_report_store4'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:34: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:35: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:35: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:35: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:35: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:38: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:38: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:39: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:39: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:40: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:40: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:41: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:41: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:18: undefined reference to `__asan_handle_no_return'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:35: undefined reference to `__asan_handle_no_return'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `GeoHeadalphaAudioProcessor::~GeoHeadalphaAudioProcessor()':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:45: undefined reference to `__asan_report_store8'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `GeoHeadalphaAudioProcessor::prepareToPlay(double, int)':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:113: undefined reference to `__asan_option_detect_stack_use_after_return'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:113: undefined reference to `__asan_stack_malloc_2'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:114: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:114: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:115: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:115: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:116: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:116: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:117: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:117: undefined reference to `__asan_report_store8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:119: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:121: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:121: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:121: undefined reference to `__asan_report_load8'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:121: undefined reference to `__asan_report_load8'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `GeoHeadalphaAudioProcessor::isBusesLayoutSupported(juce::AudioProcessor::BusesLayout const&) const':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:136: undefined reference to `__asan_option_detect_stack_use_after_return'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:136: undefined reference to `__asan_stack_malloc_3'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:143: undefined reference to `__asan_report_store_n'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:143: undefined reference to `__asan_report_store_n'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:144: undefined reference to `__asan_report_store_n'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:144: undefined reference to `__asan_report_store_n'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:143: undefined reference to `__asan_handle_no_return'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `GeoHeadalphaAudioProcessor::processBlock(juce::AudioBuffer<float>&, juce::MidiBuffer&)':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:159: undefined reference to `__asan_option_detect_stack_use_after_return'

/usr/bin/ld: /home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:159: undefined reference to `__asan_stack_malloc_0'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `GeoHeadalphaAudioProcessor::createEditor()':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:195: undefined reference to `__asan_handle_no_return'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `createPluginFilter()':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:216: undefined reference to `__asan_handle_no_return'

/usr/bin/ld: build/GeoHead-alpha.a(PluginProcessor_a059e380.o): in function `__static_initialization_and_destruction_0(int, int)':

/home/eye/Develop/GeoHead-alpha/Builds/LinuxMakefile/../../Source/PluginProcessor.cpp:217: undefined reference to `__asan_before_dynamic_init'

omitted rest for lenght

Did you add -fsanitize=address to the link flags too?