Issue 101239 - Insert a callout and enter characters, save and reload -> Crash
Summary: Insert a callout and enter characters, save and reload -> Crash
Alias: None
Product: Writer
Classification: Application
Component: code (show other issues)
Version: OOO310m9
Hardware: All All
: P2 Trivial (vote)
Target Milestone: ---
Assignee: wolframgarten
QA Contact: issues@sw
Keywords: regression
: 100472 101905 102435 103256 103507 103654 104669 (view as issue list)
Depends on:
Blocks: 84405
  Show dependency tree
Reported: 2009-04-21 10:22 UTC by amy2008
Modified: 2013-08-07 14:44 UTC (History)
5 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Note You need to log in before you can comment on or make changes to this issue.
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

OOo crashes

OOo works well

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
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
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
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. ***