Issue 101239

Summary: Insert a callout and enter characters, save and reload -> Crash
Product: Writer Reporter: amy2008 <amy2008>
Component: codeAssignee: wolframgarten
Status: CLOSED FIXED QA Contact: issues@sw <issues>
Severity: Trivial    
Priority: P2 CC: issues, Mathias_Bauer, ooo.redflag, peter.junge, stefan.baltzer
Version: OOO310m9Keywords: regression
Target Milestone: ---   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---
Issue Depends on:    
Issue Blocks: 84405    

Description amy2008 2009-04-21 10:22:00 UTC
Can reproduce it in OOo310m10 on WinXP and Fedora9

How to reproduce it
1 Create a new Writer doc
2 Insert a Vertical Callouts, then enter some characters in the Callouts, Save the
  Writer doc, at last Reload the Writer doc

Result
OOo crashes

Expectation
OOo works well

Regards
Li Meiying
Comment 1 stefan.baltzer 2009-04-21 12:00:51 UTC
For verticval callouts, CJK support must be enabled. But with standard
(horizontal) callouts the problem is the same. The critical part is that the
cursor must be in the callout (NOT in text body) when saving and reloading the
file. Reproducible on Win, Solaris, Mac OS X.
Adjusting summary.

This was OK in OOo 3.0.1. -> Set keyword "regression"
Comment 2 stefan.baltzer 2009-04-21 16:24:44 UTC
With DEV300_m46, I sometimes even get a "pure virtual function call".
SBA->OS: Spoke to MBA. Similar problem as in issue 100472 (...Pool of item set
deleted...). But maybe not in the same situation, thus maybe not a duplicate.
Please proceed, thx.
Comment 3 Oliver Specht 2009-04-23 10:05:53 UTC
*** Issue 100472 has been marked as a duplicate of this issue. ***
Comment 4 Oliver Specht 2009-04-27 12:16:08 UTC
->aw: In issue 100472 you commented about the problem of the order of removed
pools. 
The problem seems to be that the BinTextObjects register at the SwAttrPool
(Writers default pool) while the items in all the SfxItemSets of drawing objects
are pooled within a secondary pool. The secondary pools are removed in
SwDoc::ReleaseDrawModel() from  ~SwDoc(). At this time the pooled items are
deleted. 
Later in SwDoc::~SwDoc() the Writer pool is removed. At this time the
BinTextObject tries to copy attributes that do not exist anymore. 

Either the BinTextObjects find a way to register at the correct SfxItemPool or
there needs to be an additional step to get rid of the SfxItemPoolUsers before
the secondary pools are deleted. I suggest the latter.


Comment 5 amy2008 2009-05-11 04:04:35 UTC
The ID of the error report is rqtt8kc.
I just receive the error report id.
Li Meiying
Comment 6 Oliver Specht 2009-06-02 12:59:13 UTC
*** Issue 102435 has been marked as a duplicate of this issue. ***
Comment 7 Armin Le Grand 2009-06-03 17:10:44 UTC
AW->OS: Thanks for fiddlig out what happens. Adding to aw073...
Comment 8 Armin Le Grand 2009-06-08 14:27:30 UTC
AW: Looking in SW where the pool destruction starts, getting SW and building
with debug. Also getting tools and building with debug...
Comment 9 Armin Le Grand 2009-06-08 15:52:15 UTC
AW: In SwDoc::ReleaseDrawModel() the three used pools are decoupled and deleted
(the DRawingLayer one even gets an extra pSdrPool->Delete(); this should not be
needed nowadays, but who knows). The simplest solution is to try to
register/look for an EditEngineItemPool in BinTextObject::BinTextObject to
register at, so the pool to be copied will not be deleted (but decoupled).
Trying this shows that it works and avoids copying an already deleted
SfxItemPool (BinTextObject's which got constructed with a SwAttrPool directly).
Also thinking about adding a static, ref-counted EditEngineItemPool as single
to-be-used instance when ownership is needed...
Comment 10 Armin Le Grand 2009-06-08 16:05:10 UTC
AW: static, ref-counted EditEngineItemPool has dies due to various possible
basic metric values in the pool, so it is not possible to create a single global
one which will be usable in all cases.
Back to the simple case: Use a local pool when given one is null or not a
EditEngineItemPool or has on Sub-pool which is a EditEngineItemPool. Works well.
Comment 11 Armin Le Grand 2009-06-08 17:05:33 UTC
AW: Okay, done.
Comment 12 Armin Le Grand 2009-06-24 11:54:58 UTC
AW: Checked on installed Win32 install set, works as expected.
Comment 13 Armin Le Grand 2009-07-01 11:25:35 UTC
AW->WG: Please verify (as initially described)
Comment 14 Oliver Specht 2009-07-02 10:26:57 UTC
*** Issue 103256 has been marked as a duplicate of this issue. ***
Comment 15 eric.savary 2009-07-14 11:41:32 UTC
*** Issue 103507 has been marked as a duplicate of this issue. ***
Comment 16 Mathias_Bauer 2009-07-14 20:08:56 UTC
@wq: could you please verify that this issue is a duplicate to issue 103507 by
testing if the fix from aw also fixes that issue? 
Comment 17 wolframgarten 2009-07-17 11:49:22 UTC
Verified in CWS.
Comment 18 Oliver-Rainer Wittmann 2009-07-20 14:58:14 UTC
*** Issue 103654 has been marked as a duplicate of this issue. ***
Comment 19 amy2008 2009-08-05 10:15:23 UTC
Verified in DEV300m54 on WinXP
Closing
Comment 20 michael.ruess 2009-09-01 13:04:54 UTC
*** Issue 104669 has been marked as a duplicate of this issue. ***
Comment 21 bjoern.michaelsen 2010-07-22 20:53:41 UTC
*** Issue 101905 has been marked as a duplicate of this issue. ***