Issue 122485 - [Crash]OOO crash when apply animation for table/chart object
[Crash]OOO crash when apply animation for table/chart object
Status: RESOLVED FIXED
Product: Impress
Classification: Application
Component: editing
4.0.0-dev
PC Linux64
: P3 critical with 2 votes (vote)
: 4.0.0
Assigned To: Armin Le Grand
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-06-06 03:12 UTC by liuping
Modified: 2014-02-04 14:27 UTC (History)
6 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation on: ---
Developer Difficulty: ---
jsc: 4.0.0_release_blocker+


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description liuping 2013-06-06 03:12:52 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
Comment 1 liuping 2013-06-06 06:43:05 UTC
The same condition happen on chart object
Comment 2 Andre 2013-06-06 07:58:37 UTC
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.
Comment 3 Armin Le Grand 2013-06-06 12:57:34 UTC
ALG: Checked on win7, does not happen.
Comment 4 Armin Le Grand 2013-06-06 13:30:05 UTC
ALG: Checked on Mac, does not happen.
Comment 5 Armin Le Grand 2013-06-12 13:40:38 UTC
ALG: Preparing linux version...
Comment 6 Armin Le Grand 2013-06-13 12:32:29 UTC
ALG: Grepping...
Comment 7 Armin Le Grand 2013-06-13 12:40:38 UTC
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.
Comment 8 Armin Le Grand 2013-06-13 12:42:36 UTC
ALG: BTW: Did someone try with 32-bit Linux yet...? Does someone have one at hand?
Comment 9 Armin Le Grand 2013-06-13 15:23:24 UTC
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.
Comment 10 Armin Le Grand 2013-06-13 16:35:37 UTC
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.
Comment 11 Armin Le Grand 2013-06-14 11:22:27 UTC
ALG: Added preliminary fix, keeping open for HDU to take a deeper look later.
Comment 12 jsc 2013-07-02 12:25:09 UTC
grant showstopper flag, fixed already
Comment 13 liuping 2013-07-15 08:42:35 UTC
Verified on AOO400m3(Build:9702)  -  Rev. 1502185 2013-07-10 14:15:55 (Mi, 10 Jul 2013) on Redhatß64bit OS, Pass
Comment 14 Armin Le Grand 2013-07-16 14:47:55 UTC
ALG: CLosing
Comment 15 Armin Le Grand 2013-07-16 14:48:40 UTC
ALG: reopening: Bug 122758 may shed a new light on this one, recheck.
Comment 16 Armin Le Grand 2013-07-18 10:47:49 UTC
ALG: Commit was http://svn.apache.org/r1493026, checking...
Comment 17 Armin Le Grand 2013-07-18 11:00:01 UTC
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.
Comment 18 hdu@apache.org 2014-02-04 14:27:29 UTC
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.