« MBS Xojo / Real Studi… | Home | XDC in two months »

Crashing FileMaker with bad image file

Be aware that you can crash FileMaker Server with a broken image file. Crash report looks like this:

Thread 37 Crashed:
0 libsystem_platform.dylib 0x00007fff87b1efc9 _platform_memmove$VARIANT$Unknown + 41
1 com.filemaker.support.framework 0x000000010c51db31 Draco::ByteBuffer::Get(char*, unsigned int, unsigned int) const + 359
2 com.filemaker.support.framework 0x000000010c51e09f Draco::DataProviderGetBytesAtPositionCallback(void*, void*, long long, unsigned long) + 34
3 com.apple.CoreGraphics 0x00007fff87f80724 CGAccessSessionGetBytes + 204
4 com.apple.CoreGraphics 0x00007fff87f26b9c CGDataProviderCopyData + 359
5 com.apple.ImageIO.framework 0x00007fff92241e3d CGImageReadCreateWithProvider + 207
6 com.apple.ImageIO.framework 0x00007fff92241ce2 CGImageSourceCreateWithDataProvider + 262
7 com.filemaker.support.framework 0x000000010c563a8a Draco::Image2D::CreateImageFromData(Draco::ByteBuffer const*) + 40
8 com.filemaker.support.framework 0x000000010c5639c8 Draco::Image2D::Image2D(Draco::ByteBuffer const*, bool, Draco::QuadChar const&, Draco::UniversalPath const*, Draco::PhotoOrientation, Draco::PListMetadata*) + 304
9 com.filemaker.support.framework 0x000000010c563d2e Draco::Image2D::LoadImage(Draco::ByteBuffer const&, Draco::QuadChar const&, Draco::UniversalPath const*, Draco::PhotoOrientation, Draco::PListMetadata*, bool) + 108
10 com.filemaker.dbengine.framework 0x000000010b3fa81d Draco::DBBinaryData::GetExactThumbnailOnHost(Draco::CoordSize*, bool, Draco::CacheItem**, bool, unsigned int&) const + 1935
11 com.filemaker.dbengine.framework 0x000000010b5ada43 Draco::RCDownloadThumbnail::Perform() + 609
12 com.filemaker.dbengine.framework 0x000000010b5b654c Draco::RCNetworkStack::DispatchTransaction(Draco::RCConnection*, unsigned int, unsigned char*, unsigned int) + 1220
13 com.filemaker.dbengine.framework 0x000000010b5b5f8d RPO_i::Perform(unsigned int, char const*, unsigned int, OctetSeq&, OctetSeq_out) + 173

and

Thread 40 Crashed:
0 com.apple.CoreGraphics 0x00007fff87f26b75 CGDataProviderCopyData + 320
1 com.apple.ImageIO.framework 0x00007fff92241e3d CGImageReadCreateWithProvider + 207
2 com.apple.ImageIO.framework 0x00007fff92241ce2 CGImageSourceCreateWithDataProvider + 262
3 com.filemaker.support.framework 0x0000000109c2ba8a Draco::Image2D::CreateImageFromData(Draco::ByteBuffer const*) + 40
4 com.filemaker.support.framework 0x0000000109c2b9c8 Draco::Image2D::Image2D(Draco::ByteBuffer const*, bool, Draco::QuadChar const&, Draco::UniversalPath const*, Draco::PhotoOrientation, Draco::PListMetadata*) + 304
5 com.filemaker.support.framework 0x0000000109c2bd2e Draco::Image2D::LoadImage(Draco::ByteBuffer const&, Draco::QuadChar const&, Draco::UniversalPath const*, Draco::PhotoOrientation, Draco::PListMetadata*, bool) + 108
6 com.filemaker.dbengine.framework 0x0000000108abd81d Draco::DBBinaryData::GetExactThumbnailOnHost(Draco::CoordSize*, bool, Draco::CacheItem**, bool, unsigned int&) const + 1935
7 com.filemaker.dbengine.framework 0x0000000108c70a43 Draco::RCDownloadThumbnail::Perform() + 609
8 com.filemaker.dbengine.framework 0x0000000108c7954c Draco::RCNetworkStack::DispatchTransaction(Draco::RCConnection*, unsigned int, unsigned char*, unsigned int) + 1220
9 com.filemaker.dbengine.framework 0x0000000108c78f8d RPO_i::Perform(unsigned int, char const*, unsigned int, OctetSeq&, OctetSeq_out) + 173
10 com.filemaker.dbengine.framework 0x0000000108c75271 _0RL_lcfn_07aabdf5dad7309d_70000000(omniCallDescriptor*, omniServant*) + 180
11 com.filemaker.omniorb4.framework 0x0000000109525cef omniCallHandle::upcall(omniServant*, omniCallDescriptor&) + 1099
12 com.filemaker.dbengine.framework 0x0000000108c76459 _impl_RCFMP12::_dispatch(omniCallHandle&) + 1697


It may be a good idea to first check image on client before inserting it into a database. So the client would crash and not the server. As you see the server crashes when creating the thumbnails. (this is FileMaker Server 13. Newer ones may handle this better)
30 07 16 - 14:15