Summary: | Crashes when trying to insert a hyperlink with XML Form Document | ||
---|---|---|---|
Product: | LibreOffice | Reporter: | Saburo <yosi3260+libre> |
Component: | LibreOffice | Assignee: | Caolán McNamara <caolan.mcnamara> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | buzea.bogdan, caolan.mcnamara, himajin100000, hossein, raal, serval2412, stephane.guillou |
Priority: | medium | Keywords: | bibisectRequest, regression |
Version: | Inherited From OOo | ||
Hardware: | All | ||
OS: | All | ||
Whiteboard: | target:7.6.0 | ||
Crash report or crash signature: | ["libc.so.6"] | Regression By: | |
Bug Depends on: | |||
Bug Blocks: | 133092, 154386 |
Description
Saburo
2022-02-18 07:27:48 UTC
I made a mistake. Description: LibreOffice crashes only if the hyperlink is set to [New Document], [XML Form Document],[Edit later]. Can confirm in: Version: 7.3.0.3 (x64) / LibreOffice Community Build ID: 0f246aa12d0eee4a0f7adcefbf7c878fc2238db3 CPU threads: 8; OS: Windows 10.0 Build 19044; UI render: Skia/Vulkan; VCL: win Locale: en-US (en_US); UI: en-US Calc: threaded Crashed a few seconds after pressing "Apply" in Step 3. To be determined if regression, if it didn't happen in older LO, would be High. I tested on Windows + LO Portable. 4.3.7 nomal(wait a few seconds) 4.4 A dialog appears Fatal Error TransactionManage... Owner instance already closed.Call was rejected! 5.X A dialog appears Fatal Error Frame disposed. 6.0- Force close after a few seconds. (In reply to Saburo from comment #4) > I tested on Windows + LO Portable. > > 4.3.7 nomal(wait a few seconds) > 4.4 A dialog appears > Fatal Error > TransactionManage... > Owner instance already closed.Call was rejected! regression Repro in Calc with: Version: 7.6.0.0.alpha0+ (X86_64) / LibreOffice Community Build ID: cae0daff1dd8bd60208892c792948c0cd2b0eeec CPU threads: 8; OS: Linux 5.15; UI render: default; VCL: gtk3 Locale: en-AU (en_AU.UTF-8); UI: en-US Calc: threaded And in 7.5: Version: 7.5.1.2 (X86_64) / LibreOffice Community Build ID: fcbaee479e84c6cd81291587d2ee68cba099e129 CPU threads: 8; OS: Linux 5.15; UI render: default; VCL: gtk3 Locale: en-AU (en_AU.UTF-8); UI: en-US Calc: threaded Crash report: https://crashreport.libreoffice.org/stats/crash_details/339cd3bd-2715-4ea9-9f5f-89dd3a948d05 (In reply to Stéphane Guillou (stragu) from comment #6) > Repro in Calc with: (crash report was in Writer) Code pointer: 269 OUString aStrFlags('S'); 270 if (xExecuteInfo->bRbtEditLater) 271 { 272 aStrFlags += "H"; 273 } 274 SfxStringItem aFlags (SID_OPTIONS, aStrFlags); 275 276 // open url 277 const SfxPoolItem* pReturn = xExecuteInfo->pDispatcher->ExecuteList( 278 SID_OPENDOC, SfxCallMode::SYNCHRON, 279 { &aName, &aFlags, &aFrame, &aReferer }); (see https://opengrok.libreoffice.org/xref/core/cui/source/dialogs/hldocntp.cxx?r=61346723#269) If I remove lines 269-> 273 and use SfxStringItem aFlags (SID_OPTIONS, "S"); it works as we may expect since it corresponds to the "Edit now" case. I also try to use SfxCallMode::ASYNCHRON when we're in the "Edit later" case but I got: warn:legacy.tools:31063:31063:sfx2/source/appl/appopen.cxx:1019: Hidden load process must be done synchronously! and it fails later in the same way. With "Edit now", I also noticed this log: "is there a frame int 0x5593c7db2280" It seems quite a mess here :-(. Caolán: I don't know if XML forms are often used so I'm not sure a crash on them would be reported in the crashreport but would you have some idea here? I retrieved some info in https://bugs.documentfoundation.org/show_bug.cgi?id=147503#c8 but then I'm a bit stuck. Can't quite be sure what should happen but a place to start thinking is in NewXForms where in the non-hidden (edit now) case xDocSh->nOwnerLockCount is 2 after SfxViewFrame::DisplayNewDocument so when xDocSh goes out of scope the document isn't closed, while in hidden the nOwnerLockCount is 1 and on out of scope goes to 0 and gets closed which seems to be the difference. I can make it not crash by changing NewXForms from SfxViewFrame::DisplayNewDocument( *xDocSh, rReq ); to SfxViewFrame* pViewFrame = SfxViewFrame::DisplayNewDocument( *xDocSh, rReq ); if (pViewFrame) pViewFrame->GetFrame().Appear(); but then the XML Form Document will appear for a moment I'm willing to give https://gerrit.libreoffice.org/c/core/+/150891 a go in trunk, seems to work and I don't see a (obvious) downside. Caolán McNamara committed a patch related to this issue. It has been pushed to "master": https://git.libreoffice.org/core/commit/5be0f62621a5ef66438cf2dc660be8e524588c15 tdf#147503 don't use SfxObjectShellLock for new xml forms document It will be available in 7.6.0. The patch should be included in the daily builds available at https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: https://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback. |