Crash on Export - png files?
-
Hi export for my plugin (standalone, fx, au whatever) and straight crash follows (OSX). There's some png errors in the crash report. I recently included 70 png files (about 30kb each), so I'm thinking it's something to do with that. Report below... any ideas welcome!
Thread 0 Crashed:: JUCE Message Thread Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x7ff81424f7a6 __pthread_kill + 10 1 libsystem_pthread.dylib 0x7ff814287f30 pthread_kill + 262 2 libsystem_c.dylib 0x7ff8141a6a4d abort + 126 3 HISE LFO EQ 0x1101ed717 juce::pnglibNamespace::png_default_error(juce::pnglibNamespace::png_struct_def const*, char const*) + 55 4 HISE LFO EQ 0x1101ebf2f juce::pnglibNamespace::png_err(juce::pnglibNamespace::png_struct_def const*) + 31 5 HISE LFO EQ 0x1101e7d97 juce::PNGImageFormat::writeImageToStream(juce::Image const&, juce::OutputStream&) + 10039 6 HISE LFO EQ 0x10edd3776 hise::PoolBase::DataProvider::Compressor::write(juce::OutputStream&, juce::Image const&, juce::File const&) const + 246 7 HISE LFO EQ 0x10f1ea9e0 hise::SharedPoolBase<juce::Image>::writeItemToOutput(juce::OutputStream&, hise::PoolHelpers::Reference) + 592 8 HISE LFO EQ 0x10edd0dbf hise::PoolBase::DataProvider::writePool(juce::OutputStream*, double*) + 2143 9 HISE LFO EQ 0x10f21fb25 hise::FileHandlerBase::exportAllPoolsToTemporaryDirectory(hise::ModulatorSynthChain*, hise::DialogWindowWithBackgroundThread::LogData*) + 4725 10 HISE LFO EQ 0x10ed2f8af hise::CompileExporter::exportInternal(hise::CompileExporter::TargetTypes, hise::CompileExporter::BuildOption) + 25311 11 HISE LFO EQ 0x10ecefa10 hise::CompileExporter::exportMainSynthChainAsFX(hise::CompileExporter::BuildOption) + 32 12 HISE LFO EQ 0x10ecc48fc hise::BackendCommandTarget::perform(juce::ApplicationCommandTarget::InvocationInfo const&) + 972 13 HISE LFO EQ 0x11018beb2 juce::MessageQueue::runLoopSourceCallback(void*) + 242 14 CoreFoundation 0x7ff814363337 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 15 CoreFoundation 0x7ff8143632d9 __CFRunLoopDoSource0 + 157 16 CoreFoundation 0x7ff8143630a4 __CFRunLoopDoSources0 + 215 17 CoreFoundation 0x7ff814361d21 __CFRunLoopRun + 919 18 CoreFoundation 0x7ff814361372 CFRunLoopRunSpecific + 557 19 HIToolbox 0x7ff81ebcd9d9 RunCurrentEventLoopInMode + 292 20 HIToolbox 0x7ff81ebcd616 ReceiveNextEventCommon + 201 21 HIToolbox 0x7ff81ebcd531 _BlockUntilNextEventMatchingListInModeWithFilter + 66 22 AppKit 0x7ff8179690c5 _DPSNextEvent + 880 23 AppKit 0x7ff81825a150 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1304 24 AppKit 0x7ff81795a63a -[NSApplication run] + 603 25 HISE LFO EQ 0x10ec3768a main + 250 26 dyld 0x7ff813eff3a6 start + 1942
-
@DanH said in Crash on Export - png files?:
png_struct_def
looks like its a problem in the contents of your pngs - as a guess - what are you using to make the pngs?
-
@Lindon osx screenshot
-
@Lindon I need to do them again anyway so will process them through gimp and see if that helps...
-
@DanH said in Crash on Export - png files?:
about 30kb each
Is this the size in HISE or the size on disk?
-
@d-healey I don't know what the size in Hise is... that's the file size on disk. How do I find out about Hise? I haven't compressed them at all - OSX may have though...
-
@DanH said in Crash on Export - png files?:
I haven't compressed them at all - OSX may have though...
Compression makes no difference. Once loaded into memory they expand to full bitmap size - search the forum for more info on that.
You can see their memory usage in HISE in the pool table. You'll need to add a floating window or custom popup and add a pool table to it to see this.
@Christoph-Hart I think this should be a default window available from the view menu probably. Along with others like the server controller, etc.
-
@d-healey Yup I know about the compression thing.
Can't see a pool table in the floating tile options. How can I configure the custom pop up? I made a module browser before, can't remember how though!
-
@DanH oh found it! some of my knob filmstrips are 5000 kb, but the images I'm using are all about 344 kb.
-
@DanH Does the total come to more than 50mb?
-
@d-healey 234 mb!
-
@d-healey I don't need and am not using them all though. I figured Hise only includes the images that are actually used in the project, but perhaps I'm wrong about that!
-
@DanH said in Crash on Export - png files?:
I figured Hise only includes the images that are actually used in the project, but perhaps I'm wrong about that!
If you've added it to the pool then it will be included in the plugin. With that size of images you should probably use a separate file rather than embedding them in the plugin.
https://docs.hise.audio/working-with-hise/settings/project.html#embed-image-files
-
@d-healey said in Crash on Export - png files?:
https://docs.hise.audio/working-with-hise/settings/project.html#embed-image-files
nice, good to know. I'll see what I can do to reduce the load!! Thanks :)
-
@DanH said in Crash on Export - png files?:
@Lindon osx screenshot
yep suspicious of this - use gimp and export as png
-
@d-healey so I've got the images file sizes down as much as I can... It's 95mb in Hise. My other projects have similar image sizes and export fine, so I gave it a go and boom, crashed like before.
So I unchecked Imbed Images and it still crashes like before... So perhaps it's something else?!
report:
3 HISE LFO EQ 0x101c98717 juce::pnglibNamespace::png_default_error(juce::pnglibNamespace::png_struct_def const*, char const*) + 55 4 HISE LFO EQ 0x101c96f2f juce::pnglibNamespace::png_err(juce::pnglibNamespace::png_struct_def const*) + 31 5 HISE LFO EQ 0x101c92d97 juce::PNGImageFormat::writeImageToStream(juce::Image const&, juce::OutputStream&) + 10039
-
So the crash happens before it compiles?
-
@d-healey yep, a few seconds after hitting export, before it asks about batch compile or anything.
I'll do some debugging in the morning and reprocess the pngs
-
@DanH said in Crash on Export - png files?:
yep, a few seconds after hitting export, before it asks about batch compile or anything.
Possibly nothing to do with your images then. Try removing them all and see what happens
-
@d-healey it was this line
Engine.loadImageIntoPool("*");
Which I was commenting out but Hise needed to be restarted before the change would take effect.
Thanks for the help :)