Latest tip hosting crashes


#1

The “Plugin Host” crashes when loading my VST plugin, while the same plugin seems to load OK on other hosts. The stacktrace reported from VS is:

>	Plugin Host.exe!__ascii_stricmp(const char * dst, const char * src)  Line 80 + 0x3 bytes	C++
 	Plugin Host.exe!_stricmp(const char * dst, const char * src)  Line 101 + 0xd bytes	C++
 	Plugin Host.exe!juce::CharPointer_UTF8::compareIgnoreCase(const juce::CharPointer_UTF8 & other)  Line 428 + 0x11 bytes	C++
 	Plugin Host.exe!juce::String::compareIgnoreCase(const juce::String & other)  Line 583 + 0x34 bytes	C++
 	Plugin Host.exe!juce::compareFilenames(const juce::String & name1, const juce::String & name2)  Line 194	C++
 	Plugin Host.exe!juce::File::operator!=(const juce::File & other)  Line 197 + 0x19 bytes	C++
 	Plugin Host.exe!juce::PluginDirectoryScanner::setDeadMansPedalFile(const juce::StringArray & newContents)  Line 113 + 0x10 bytes	C++
 	Plugin Host.exe!juce::PluginDirectoryScanner::scanNextFile(const bool dontRescanIfAlreadyInList)  Line 95	C++
 	Plugin Host.exe!juce::PluginListComponent::Scanner::doNextScan()  Line 359 + 0x14 bytes	C++
 	Plugin Host.exe!juce::PluginListComponent::Scanner::timerCallback()  Line 336 + 0x8 bytes	C++
 	Plugin Host.exe!juce::Timer::TimerThread::callTimers()  Line 131	C++
 	Plugin Host.exe!juce::Timer::TimerThread::CallTimersMessage::messageCallback()  Line 200	C++
 	Plugin Host.exe!juce::WindowsMessageHelpers::dispatchMessageFromLParam(long lParam)  Line 50	C++
 	Plugin Host.exe!juce::MessageManager::dispatchNextMessageOnSystemQueue(const bool returnIfNoPendingMessages)  Line 111 + 0x9 bytes	C++
 	Plugin Host.exe!juce::MessageManager::runDispatchLoopUntil(int millisecondsToRunFor)  Line 119 + 0x10 bytes	C++
 	Plugin Host.exe!juce::MessageManager::runDispatchLoop()  Line 100	C++
 	Plugin Host.exe!juce::JUCEApplication::main()  Line 246	C++
 	Plugin Host.exe!WinMain(void * __formal, void * __formal, void * __formal, void * __formal)  Line 107 + 0x18 bytes	C++
 	Plugin Host.exe!__tmainCRTStartup()  Line 275 + 0x2c bytes	C
 	Plugin Host.exe!WinMainCRTStartup()  Line 189	C

#2

No such problems here… Can you debug it a bit more deeply?


#3

Well JuceDemoPlugin loads fine, my plugin won’t

the method that fails is inside PluginDirectoryScanner, the comparison of two File() objects failes here:

void PluginDirectoryScanner::setDeadMansPedalFile (const StringArray& newContents)
{
    if (deadMansPedalFile != File::nonexistent)
        deadMansPedalFile.replaceWithText (newContents.joinIntoString ("\n"), true, true);
}

Then when the comparison happens the compareIgnoreCase functions fails here:

int compareIgnoreCase (const CharPointer_UTF8& other) const noexcept
    {
       #if JUCE_WINDOWS
        return stricmp (data, other.data); // Crash
       #else
        return strcasecmp (data, other.data);
       #endif
    }

And this happens because the data pointer is 0xfeeefeee in my Watch List.


#4

I think it might be just my plugin, but other hosts seem to load it fine, and the Plugin Host Demo used to load it just fine as i used it for debugging, it just stopped now.