https://bugs.winehq.org/show_bug.cgi?id=48492
Bug ID: 48492 Summary: XCP-ng Center v8.x (.NET 4.6 app) crashes on startup (WIC BmpDecoder does not support 32bpp RGBA format) Product: Wine Version: 5.0-rc6 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: windowscodecs Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
a user on IRC #winehq asked about the app.
Project homepage:
https://github.com/xcp-ng/xenadmin
Downloads:
https://github.com/xcp-ng/xenadmin/releases/tag/v8.0.1.26
Prerequisite: 'winetricks -q dotnet462'
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/XCP-ng Center
$ wine ./XCP-ng\ Center.exe 0009:fixme:wincodecs:BmpDecoder_ReadHeaders unsupported bitfields type depth=32 red=ff000000 green=ff0000 blue=ff00 alpha=ff 0009:fixme:wincodecs:WICConvertBitmapSource cannot convert {6fddc324-4e03-4bfe-b185-3d77768dc900} to {6fddc324-4e03-4bfe-b185-3d77768dc90f} ... 0009:err:eventlog:ReportEventW L"Application: XCP-ng Center.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.Runtime.InteropServices.ExternalException\n at System.Drawing.Image.FromStream(System.IO.Stream, Boolean, Boolean)\n at splash_"... 0009:fixme:advapi:DeregisterEventSource (0xcafe4242) stub
Unhandled Exception: 0009:fixme:ver:GetCurrentPackageId (0x32c9a0 (nil)): stub System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+. at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) at splash_xcp_ng.SplashForm.Style() at splash_xcp_ng.SplashForm..ctor() at splash_xcp_ng.Program.Main() wine: Unhandled exception 0xe0434352 in thread 9 at address 7B00DAB1 (thread 0009), starting debugger... --- snip ---
Trace log:
--- snip --- $ WINEDEBUG=+seh,+relay,+gdiplus,+wincodecs wine ./XCP-ng\ Center.exe >>log.txt 2>&1 ... 002c:trace:gdiplus:GdipLoadImageFromStream 06390030 0032F450 ... 002c:trace:gdiplus:initialize_decoder_wic 06390030,{0af1d87e-fcfe-4188-bdeb-a7906471cbe3} ... 002c:trace:wincodecs:BmpDecoder_ReadHeaders bitmap header=124 compression=3 depth=32 002c:fixme:wincodecs:BmpDecoder_ReadHeaders unsupported bitfields type depth=32 red=ff000000 green=ff0000 blue=ff00 alpha=ff 002c:trace:gdiplus:decode_frame_wic 03C2F3E0,0,0032F450 002c:trace:wincodecs:BmpDecoder_AddRef (0x3c2f3e0) refcount=2 002c:trace:wincodecs:BmpFrameDecode_GetPixelFormat (0x3c2f3e4,0x32f280) ... 002c:Call windowscodecs.WICConvertBitmapSource(061352d0,03c2f3e4,0032f27c) ret=0611d193 002c:trace:wincodecs:WICConvertBitmapSource {6fddc324-4e03-4bfe-b185-3d77768dc90f},0x3c2f3e4,0x32f27c 002c:trace:wincodecs:BmpFrameDecode_GetPixelFormat (0x3c2f3e4,0x32f154) ... 002c:trace:wincodecs:ComponentEnum_Reset (0x3c2f630) 002c:trace:wincodecs:ComponentEnum_Next (0x3c2f630,1,0x32f140,0x32f150) 002c:trace:wincodecs:FormatConverterInfo_AddRef (0x3c2f820) refcount=3 002c:trace:wincodecs:FormatConverterInfo_QueryInterface (0x3c2f820,{9f34fb65-13f4-4f15-bc57-3726b5e53d9f},0x32f144) 002c:trace:wincodecs:FormatConverterInfo_AddRef (0x3c2f820) refcount=4 002c:Call advapi32.RegOpenKeyExW(000001b4,f6e43470 L"PixelFormats",00000000,00020019,0032f108) ret=f6de9b81 ... 002c:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=f6de9b81 002c:Call advapi32.RegOpenKeyExW(00000188,0032f164 L"{6FDDC324-4E03-4BFE-B185-3D77768DC900}",00000000,00020019,0032f10c) ret=f6de9ba7 ... 002c:Ret advapi32.RegOpenKeyExW() retval=00000002 ret=f6de9ba7 ... 002c:trace:wincodecs:FormatConverterInfo_Release (0x3c2f820) refcount=3 002c:trace:wincodecs:FormatConverterInfo_Release (0x3c2f820) refcount=2 002c:trace:wincodecs:ComponentEnum_Next (0x3c2f630,1,0x32f140,0x32f150) 002c:trace:wincodecs:ComponentEnum_Release (0x3c2f630) refcount=0 002c:trace:wincodecs:FormatConverterInfo_Release (0x3c2f820) refcount=1 ... 002c:Ret KERNEL32.HeapFree() retval=00000001 ret=f6dea627 002c:fixme:wincodecs:WICConvertBitmapSource cannot convert {6fddc324-4e03-4bfe-b185-3d77768dc900} to {6fddc324-4e03-4bfe-b185-3d77768dc90f} 002c:Ret windowscodecs.WICConvertBitmapSource() retval=88982f50 ret=0611d193 002c:trace:gdiplus:decode_frame_wic {6fddc324-4e03-4bfe-b185-3d77768dc900} => 0x26200a 002c:trace:wincodecs:BmpDecoder_Release (0x3c2f3e0) refcount=1 002c:Ret gdiplus.GdipLoadImageFromStream() retval=00000001 ret=04b6c0cb ... 002c:Call KERNEL32.RaiseException(e0434352,00000001,00000005,0032f33c) ret=00a9352f .. 002c:trace:seh:raise_exception code=e0434352 flags=1 addr=0x7b00dab1 ip=7b00dab1 tid=002c 002c:trace:seh:raise_exception info[0]=80004005 002c:trace:seh:raise_exception info[1]=00000000 002c:trace:seh:raise_exception info[2]=00000000 002c:trace:seh:raise_exception info[3]=00000000 002c:trace:seh:raise_exception info[4]=008e0000 002c:trace:seh:raise_exception eax=0032f244 ebx=00000005 ecx=0032f33c edx=0032f244 esi=00000005 edi=0032f2b0 002c:trace:seh:raise_exception ebp=0032f298 esp=0032f244 cs=320023 ds=ffff002b es=002b fs=f7be0063 gs=006b flags=00000216 --- snip ---
Managed app code call site:
--- snip --- private void Style() { this.labelVersion.Text = this.ProductVersion + " (Build " + (object) this.AssemblyVersion + ")"; this.assembly = Assembly.LoadFrom(Application.ExecutablePath); this.stream = this.assembly.GetManifestResourceStream("splash_xcp_ng.Resources.splash.bmp"); Image image = Image.FromStream(this.stream); this.FormBorderStyle = FormBorderStyle.None; this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true); this.BackgroundImage = image; this.BackgroundImageLayout = ImageLayout.Stretch; this.Width = image.Width; this.Height = image.Height; this.CenterToScreen(); } --- snip ---
Dumped information from extracted .bmp (assembly resources):
--- snip --- $ identify -verbose splash_xcp_ng.Resources.splash.bmp
Image: splash_xcp_ng.Resources.splash.bmp Format: BMP (Microsoft Windows bitmap image) Class: DirectClass Geometry: 415x217+0+0 Resolution: 28.34x28.34 Print size: 14.6436x7.65702 Units: PixelsPerCentimeter Colorspace: sRGB Type: TrueColorAlpha Base type: Undefined Endianess: Undefined Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit alpha: 1-bit Channel statistics: Pixels: 90055 Red: min: 0 (0) max: 255 (1) mean: 207.743 (0.81468) standard deviation: 48.6337 (0.19072) kurtosis: 7.97873 skewness: -2.9306 entropy: 0.754373 Green: min: 0 (0) max: 255 (1) mean: 207.124 (0.812251) standard deviation: 47.7944 (0.187429) kurtosis: 6.57435 skewness: -2.68243 entropy: 0.757905 Blue: min: 0 (0) max: 255 (1) mean: 207.299 (0.812936) standard deviation: 46.8957 (0.183905) kurtosis: 6.42342 skewness: -2.64095 entropy: 0.758985 Alpha: min: 255 (1) max: 255 (1) mean: 255 (1) standard deviation: 0 (0) kurtosis: 8.192e+63 skewness: 1e+45 entropy: 0 Image statistics: Overall: min: 0 (0) max: 255 (1) mean: 219.291 (0.859966) standard deviation: 35.8309 (0.140514) kurtosis: 8.34837 skewness: -2.79921 entropy: 0.567816 Rendering intent: Relative Chromaticity: red primary: (0,0) green primary: (0,0) blue primary: (0,0) white point: (0.3127,0.329) Background color: white Border color: srgba(223,223,223,1) Matte color: grey74 Transparent color: none Interlace: None Intensity: Undefined Compose: Over Page geometry: 415x217+0+0 Dispose: Undefined Iterations: 0 Compression: Undefined Orientation: Undefined Properties: date:create: 2020-01-21T22:30:19+01:00 date:modify: 2020-01-21T22:30:19+01:00 signature: dc1ce4626e58781d380b4fd283d6e2df82f66930394cc4b248f2872115b7fd6f Artifacts: filename: splash_xcp_ng.Resources.splash.bmp verbose: true Tainted: False Filesize: 360358B Number pixels: 90055 Pixels per second: 9.0055MB User time: 0.000u Elapsed time: 0:01.010 Version: ImageMagick 6.9.9-38 Q16 x86_64 2018-03-12 http://www.imagemagick.org --- snip ---
Via virustotal.com:
https://www.virustotal.com/gui/file/8b9f551cbd682648d5c9282db4d953d1f34b90c0...
Debugger:
--- snip ---
Wine-gdb> bt #0 0xf6dfd57e in BmpDecoder_Initialize (iface=<optimized out>, pIStream=<optimized out>, cacheOptions=<optimized out>) at /home/focht/projects/wine/mainline-src/dlls/windowscodecs/bmpdecode.c:863
...
Wine-gdb> p *This $7 = {IWICBitmapDecoder_iface = {lpVtbl = 0xf6e632c0 <BmpDecoder_Vtbl>}, IWICBitmapFrameDecode_iface = {lpVtbl = 0xf6e63300 <BmpDecoder_FrameVtbl>}, ref = 1, initialized = 0, stream = 0x0, palette_offset = 138, image_offset = 138, bih = {bV5Size = 124, bV5Width = 415, bV5Height = 217, bV5Planes = 1, bV5BitCount = 32, bV5Compression = 3, bV5SizeImage = 360220, bV5XPelsPerMeter = 2834, bV5YPelsPerMeter = 2834, bV5ClrUsed = 0, bV5ClrImportant = 0, bV5RedMask = 4278190080, bV5GreenMask = 16711680, bV5BlueMask = 65280, bV5AlphaMask = 255, bV5CSType = 1934772034, bV5Endpoints = {ciexyzRed = {ciexyzX = 0, ciexyzY = 0, ciexyzZ = 0}, ciexyzGreen = {ciexyzX = 0, ciexyzY = 0, ciexyzZ = 0}, ciexyzBlue = {ciexyzX = 0, ciexyzY = 0, ciexyzZ = 0}}, bV5GammaRed = 0, bV5GammaGreen = 0, bV5GammaBlue = 0, bV5Intent = 2, bV5ProfileData = 0, bV5ProfileSize = 0, bV5Reserved = 0}, pixelformat = 0x4c004c, bitsperpixel = 0, read_data_func = 0x0, stride = 0, imagedata = 0x0, imagedatastart = 0x0, lock = {DebugInfo = 0x3c16ce8, LockCount = 0, RecursionCount = 1, OwningThread = 0x53, LockSemaphore = 0x0, SpinCount = 0}, packed = 0, icoframe = 0}
Wine-gdb> p/x This->bih.bV5RedMask $9 = 0xff000000
Wine-gdb> p/x This->bih.bV5GreenMask $10 = 0xff0000
Wine-gdb> p/x This->bih.bV5BlueMask $11 = 0xff00
Wine-gdb> p/x This->bih.bV5AlphaMask $12 = 0xff --- snip ---
Microsoft docs:
https://docs.microsoft.com/en-us/windows/win32/wic/-wic-codec-native-pixel-f...
$ sha1sum XCP-ng-Center-8.0.1.26.msi 001d450f89cb470146b87c771362bacdacbaa945 XCP-ng-Center-8.0.1.26.msi
$ du -sh XCP-ng-Center-8.0.1.26.msi 7.2M XCP-ng-Center-8.0.1.26.msi
$ wine --version wine-5.0-rc6
Regards