Apache OpenOffice (AOO) Bugzilla – Issue 122485
[Crash]OOO crash when apply animation for table/chart object
Last modified: 2017-05-20 10:35:26 UTC
Build : AOO400m1(Build:9700) - Rev. 1478648 OS: Redhat 64bit Step: 1. New a impress 2. Create a table in slide 1 3. Apply an animation for table Issue: File crash
The same condition happen on chart object
Confirmed also on Ubuntu. Crash is caused by X11 error RenderBadPicture. Stack shows that vclcanvas::SpriteCanvas::updateScreen() is involved. Maybe a sprite bitmap is empty or contains invalid data.
ALG: Checked on win7, does not happen.
ALG: Checked on Mac, does not happen.
ALG: Preparing linux version...
ALG: Grepping...
ALG: After long debugging with gdb I found out that for showing the first frame a CanvasCustomSprite and SpriteCanvas is used. There, the metafile info is painted to a content OutDev (hoded in a OutDevProvider) and also to a BackBuffer (which is a OutDevProvider). That BackBuffer is created also for painting a mask (in pBackBufferMask) using a boolean 'true' to get a monochrome VirtualDevice created in the constructor of class BackBuffer. For some reason monochrome VirtualDevices on Linux do not work anymore; may have to do with last changes/renewals to the codebase. The 'RenderBadPicture' error happens when the VCL internal stuff tries to access this system-dependent surface for painting. I tried to change BackBuffer to always just create a regular VirtualDevice (which will then also be able to AntiAliase) and this works without crash. Adding HDU to CC, he may know more about this. To get this fixed for now, I propose to use regular VDevs for the Masking creation. This triggers a assertion ('Performance: ...') which warns that a too deep (more than 1bit) buffer was allocated, but works.
ALG: BTW: Did someone try with 32-bit Linux yet...? Does someone have one at hand?
ALG: I directly checked X11SalVirtualDevice::Init where the XCreatePixmap call with 1Bit depth is executed on system-dependent level and indeed I get a zero return value. Sometimes this happens in X11SalVirtualDevice::SetSize, too. In both cases the following CreatePicture will fail and crash.
ALG: I have continued debugging and it is stable going wrong now after a X11SalVirtualDevice::SetSize at a 1Bit bitmap. It may be related to colormaps, but I am not sure. HDU is the specialist, I will now try to fix it changing the BackBuffer accordingly.
ALG: Added preliminary fix, keeping open for HDU to take a deeper look later.
grant showstopper flag, fixed already
Verified on AOO400m3(Build:9702) - Rev. 1502185 2013-07-10 14:15:55 (Mi, 10 Jul 2013) on Redhatß64bit OS, Pass
ALG: CLosing
ALG: reopening: Bug 122758 may shed a new light on this one, recheck.
ALG: Commit was http://svn.apache.org/r1493026, checking...
ALG: No, no changes. This task is about VDevs with 1bit depth not working, the other task was about bitmaps of that kind not being initialized. Back to closed.
Masking with 8bit alpha is better/faster anyway, also for Quartz (Mac). With the Linux versions I have here I cannot reproduce the problem, but I can imaging that some X11 drivers or other parts of the X11 system dropped some older stuff. It would be interesting to see the result of cat /etc/*elease and to attach the file /tmp/xdpy.txt created by xdpyinfo > /tmp/xdpy.txt from a system that has problems with such 1-bit masks.