PCX import crash for 8bit RLE format

The UE4 Editor reproducibly crashes when trying to import this 8bit PCX file on a UE 4.3.1 source build with the following message:

Assertion failed: (DestPtr+RunLength)<DestEnd [File:E:\UnrealEngine\UnrealEngine\Engine\Source\Editor\UnrealEd\Private\Factories\EditorFactories.cpp] [Line: 3766]
RLE going off the end of buffer
Stack:
FWindowsPlatformStackWalk::StackWalkAndDump() 0xe0bff706 + 0 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\core\private\windows\windowsplatformstackwalk.cpp:177] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Core.dll]
FDebug::AssertFailed() 0xe0aafd75 + 0 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\core\private\misc\outputdevice.cpp:203] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Core.dll]
UTextureFactory::ImportTexture() 0xd31e836a + 44 bytes [File=e:\unrealengine\unrealengine\engine\source\editor\unrealed\private\factories\editorfactories.cpp:3766] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-UnrealEd.dll]
UTextureFactory::FactoryCreateBinary() 0xd31cb98d + 62 bytes [File=e:\unrealengine\unrealengine\engine\source\editor\unrealed\private\factories\editorfactories.cpp:4244] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-UnrealEd.dll]
UFactory::FactoryCreateBinary() 0xd2afe66a + 90 bytes [File=e:\unrealengine\unrealengine\engine\source\editor\unrealed\classes\factories\factory.h:123] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-UnrealEd.dll]
UFactory::StaticImportObject() 0xd3252c29 + 255 bytes [File=e:\unrealengine\unrealengine\engine\source\editor\unrealed\private\factories\factory.cpp:282] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-UnrealEd.dll]
FAssetTools::ImportAssets() 0xcccf5957 + 137 bytes [File=e:\unrealengine\unrealengine\engine\source\developer\assettools\private\assettools.cpp:701] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-AssetTools.dll]
FAssetTools::ImportAssets() 0xcccf4615 + 28 bytes [File=e:\unrealengine\unrealengine\engine\source\developer\assettools\private\assettools.cpp:362] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-AssetTools.dll]
SContentBrowser::HandleImportClicked() 0xcca9e16e + 29 bytes [File=e:\unrealengine\unrealengine\engine\source\editor\contentbrowser\private\scontentbrowser.cpp:632] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-ContentBrowser.dll]
TBaseSPMethodDelegateInstance_RetVal_NoParams<SContentBrowser,FReply,0>::Execute() 0xcca869bc + 17 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\core\public\delegates\delegateinstancesimpl.inl:161] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-ContentBrowser.dll]
TBaseDelegate_RetVal_NoParams<FReply>::Execute() 0xdf89070a + 6 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:1058] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Slate.dll]
SButton::OnMouseButtonUp() 0xdf8b07a9 + 17 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\slate\private\widgets\input\sbutton.cpp:188] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Slate.dll]
FSlateApplication::ProcessMouseButtonUpEvent() 0xdf6ba119 + 23 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:3354] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Slate.dll]
FSlateApplication::OnMouseUp() 0xdf6af599 + 17 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:3321] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Slate.dll]
FWindowsApplication::ProcessDeferredMessage() 0xe0be903d + 12 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\core\private\windows\windowsapplication.cpp:1216] [in E:\UnrealEngine\UnrealEngine\Engine\Binaries\Win64\UE4Editor-Core.dll]
FWindowsApplication::DeferMessage() 0xe0bd8b61 + 74 bytes [File=e:\unrealengine\unrealengine\engine\source\runtime\core\private\windows\windowsapplication.cpp:1507] [in E:\UnrealEngine\UnrealEng

The image file itself seems to be valid and loads fine in e.g. Unreal Engine 2 and various image editing applications. A quick glance over the importing code suggests that there might be a “fence post error” in the RLE size check on the line specified in above error message.

Hi Wormbo,

Have you attempted to import it as a .png? See if you get the same error when doing that. Can you also post your crash logs and dxdiag so we can see what might be occurring? Thank you!

Well, it’s not really about not being able to import, but about the fact that a certain piece of importing code is buggy. I guess I could even submit a pull request, but that feels a bit weird, as I think the line I quoted above is merely missing a single equals sign.

Anyway, I’ve edited the post to include the entire crash message. (Probably needs to be approved.) The log file doesn’t give any additional useful information and neither will dxdiag, because nothing it could report actually is involved here.

Hi Wormbo,

I was able to reproduce this crash on my end and have entered in a crash report (TTP#343649) to be assessed. Thank you and have a great day!