Bug 156511 - interface XStorage no more usable on odb with 7.6 and 7.7
Summary: interface XStorage no more usable on odb with 7.6 and 7.7
Status: UNCONFIRMED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Base (show other bugs)
Version:
(earliest affected)
7.6.0.0 alpha0+
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard: QA:needsComment
Keywords:
Depends on:
Blocks:
 
Reported: 2023-07-28 23:28 UTC by prrvchr
Modified: 2023-08-16 03:06 UTC (History)
0 users

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description prrvchr 2023-07-28 23:28:12 UTC
Description:
I have two extensions that use the com.sun.star.embed.XStorage interface on odb files and I just noticed that this interface has become unusable with versions 7.6 and 7.7 of LibreOffice

Steps to Reproduce:
1. Install jdbcDriverOOo extension (https://prrvchr.github.io/jdbcDriverOOo/)
2. Install SQLiteOOo extension (https://prrvchr.github.io/HsqlDriverOOo/)
3. Create a new SQLite embedded database and open the database for editing (https://prrvchr.github.io/HsqlDriverOOo/#how-to-create-a-new-database)
4. Close this new database (file -> close) or save it under a new name (file -> Save as)

Actual Results:
If you use a version of LibreOffice 7.6 or higher LibreOffice freezes when closing or saving under another name.

Expected Results:
If you use a version of LibreOffice 7.5 or lower LibreOffice close or save as new name without problems.


Reproducible: Always


User Profile Reset: No

Additional Info:
It seems that the LibreOffice freeze occurs not when acquiring the XStorage interface but when starting the data transfer.
Comment 1 prrvchr 2023-07-30 21:00:55 UTC
Work on:

Version: 7.3.7.2 / LibreOffice Community
Build ID: 30(Build:2)
CPU threads: 2; OS: Linux 5.15; UI render: default; VCL: qt5 (cairo+xcb)
Locale: fr-FR (fr_FR.UTF-8); UI: en-US
Ubuntu package version: 1:7.3.7-0ubuntu0.22.04.3
Calc: threaded

Version: 7.5.5.2 (X86_64) / LibreOffice Community
Build ID: 50(Build:2)
CPU threads: 2; OS: Linux 5.15; UI render: default; VCL: qt5 (cairo+xcb)
Locale: fr-FR (fr_FR.UTF-8); UI: en-US
Ubuntu package version: 4:7.5.5~rc2-0ubuntu0.22.04.1~lo1
Calc: threaded

Version: 7.4.3.2 (x64) / LibreOffice Community
Build ID: 1048a8393ae2eeec98dff31b5c133c5f1d08b890
CPU threads: 2; OS: Windows 10.0 Build 19045; UI render: Skia/Raster; VCL: win
Locale: fr-FR (fr_FR); UI: fr-FR
Calc: threaded


LibreOffice freezes on:

Version: 7.6.0.1 (X86_64) / LibreOffice Community
Build ID: 776eaf34564cbf3f034a0ba1fd1d5c32ff9ccf1c
CPU threads: 2; OS: Linux 5.15; UI render: default; VCL: qt5 (cairo+xcb)
Locale: fr-FR (fr_FR.UTF-8); UI: en-US
Calc: threaded

Version: 7.6.0.1 (X86_64) / LibreOffice Community
Build ID: 776eaf34564cbf3f034a0ba1fd1d5c32ff9ccf1c
CPU threads: 2; OS: Windows 10.0 Build 19045; UI render: Skia/Raster; VCL: win
Locale: fr-FR (fr_FR); UI: fr-FR
Calc: threaded
Comment 2 prrvchr 2023-07-31 18:17:47 UTC
With LibreOffice version 7.5.x or lower, when I close an embedded odb file I get the following log file:

>  event no thread   date       time        (class/method:) message
>         1    52409 2023-07-31 18:06:16.544235642 Driver::__init__(): Driver initialization completed
>         2    52409 2023-07-31 18:06:16.550178861 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>         3    52409 2023-07-31 18:06:16.552129142 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>         4    52409 2023-07-31 18:06:16.555664628 Driver::getPropertyInfo(): Get information about the possibles DriverPropertyInfo for this driver for URL: sdbc:embedded:hsqldb
>         5    52409 2023-07-31 18:06:16.922124393 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: JavaDriverClass / 
>         6    52409 2023-07-31 18:06:16.927646831 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: JavaDriverClassPath / 
>         7    52409 2023-07-31 18:06:16.929451531 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: SystemProperties / 
>         8    52409 2023-07-31 18:06:16.931096176 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: ParameterNameSubstitution / false
>         9    52409 2023-07-31 18:06:16.932993773 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: IsAutoRetrievingEnabled / false
>        10    52409 2023-07-31 18:06:16.935386244 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: AutoRetrievingStatement / 
>        11    52409 2023-07-31 18:06:16.937198930 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: GenerateASBeforeCorrelationName / true
>        12    52409 2023-07-31 18:06:16.938806895 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: IgnoreCurrency / false
>        13    52409 2023-07-31 18:06:16.940391787 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: EscapeDateTime / true
>        14    52409 2023-07-31 18:06:16.942468308 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: TypeInfoSettings / 
>        15    52409 2023-07-31 18:06:16.944180000 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: ImplicitCatalogRestriction / 
>        16    52409 2023-07-31 18:06:16.945866908 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: ImplicitSchemaRestriction / 
>        17    52409 2023-07-31 18:06:16.947506469 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: AutoIncrementCreation / 
>        18    52409 2023-07-31 18:06:16.949396286 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: IgnoreDriverPrivileges / false
>        19    52409 2023-07-31 18:06:17.048375978 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>        20    52409 2023-07-31 18:06:17.080965478 Driver::connect(): Loading the driver for the url: file:///home/prrvchr/Documents/New%20Database.odb
>        21    52409 2023-07-31 18:06:17.770531205 Driver::connect(): SQLite version: 3.42.0.0 database is loaded, the user:  is connected
>        22    52409 2023-07-31 18:06:17.886325308 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>        23    52409 2023-07-31 18:06:17.892760195 Driver::getDataDefinitionByConnection(): Driver give the container of tables related to the given connection.
>        24    52409 2023-07-31 18:06:21.146850924 DocumentHandler::queryClosing(): Attempt to close document with Url: file:///home/prrvchr/Documents/New%20Database.odb
>        25    52409 2023-07-31 18:06:21.150262505 DocumentHandler::_closeDataBase(): Attempt to move element with name: New Database
>        26    52409 2023-07-31 18:06:21.153191825 DocumentHandler::_closeDataBase(): The element with name: New Database has been moved...
>        27    52409 2023-07-31 18:06:21.189808886 DocumentHandler::queryClosing(): The document with Url: file:///home/prrvchr/Documents/New%20Database.odb has been closed...

With a version 7.6.x or 7.7 (gerrit), when I close an embedded odb file, LibreOffice freezes with the following log file:


>  event no thread   date       time        (class/method:) message
>         1    51385 2023-07-31 17:58:11.878416411 Driver::__init__(): Driver initialization completed
>         2    51385 2023-07-31 17:58:11.882501541 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>         3    51385 2023-07-31 17:58:11.887354195 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>         4    51385 2023-07-31 17:58:11.897610021 Driver::getPropertyInfo(): Get information about the possibles DriverPropertyInfo for this driver for URL: sdbc:embedded:hsqldb
>         5    51385 2023-07-31 17:58:11.907960079 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: JavaDriverClass / 
>         6    51385 2023-07-31 17:58:11.910489485 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: JavaDriverClassPath / 
>         7    51385 2023-07-31 17:58:11.912715553 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: SystemProperties / 
>         8    51385 2023-07-31 17:58:11.915011909 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: ParameterNameSubstitution / false
>         9    51385 2023-07-31 17:58:11.918285426 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: IsAutoRetrievingEnabled / false
>        10    51385 2023-07-31 17:58:11.921728006 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: AutoRetrievingStatement / 
>        11    51385 2023-07-31 17:58:11.924292132 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: GenerateASBeforeCorrelationName / true
>        12    51385 2023-07-31 17:58:11.926676553 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: IgnoreCurrency / false
>        13    51385 2023-07-31 17:58:11.929076966 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: EscapeDateTime / true
>        14    51385 2023-07-31 17:58:11.931252736 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: TypeInfoSettings / 
>        15    51385 2023-07-31 17:58:11.933559082 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: ImplicitCatalogRestriction / 
>        16    51385 2023-07-31 17:58:11.935732915 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: ImplicitSchemaRestriction / 
>        17    51385 2023-07-31 17:58:11.938016982 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: AutoIncrementCreation / 
>        18    51385 2023-07-31 17:58:11.940289018 Driver::getPropertyInfo(): The driver responds with a DriverPropertyInfo Name / Value: IgnoreDriverPrivileges / false
>        19    51385 2023-07-31 17:58:11.945033540 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>        20    51385 2023-07-31 17:58:12.062465771 Driver::connect(): Loading the driver for the url: file:///home/prrvchr/Documents/New%20Database.odb
>        21    51385 2023-07-31 17:58:12.382000607 Driver::connect(): SQLite version: 3.42.0.0 database is loaded, the user:  is connected
>        22    51385 2023-07-31 17:58:12.458088212 Driver::acceptsURL(): Driver can open a connection with the URL: sdbc:embedded:hsqldb - True
>        23    51385 2023-07-31 17:58:12.461811875 Driver::getDataDefinitionByConnection(): Driver give the container of tables related to the given connection.
>        24    51385 2023-07-31 17:58:43.021525417 DocumentHandler::queryClosing(): Attempt to close document with Url: file:///home/prrvchr/Documents/New%20Database.odb
>        25    51385 2023-07-31 17:58:43.036071164 DocumentHandler::_closeDataBase(): Attempt to move element with name: New Database
Comment 3 prrvchr 2023-08-01 21:39:28 UTC
For me this problem is solved, I use the com.sun.star.embed.XStorage interface differently[1].

I cannot explain the origin of this bug since my extensions worked under OpenOffice and LibreOffice until 7.5.x.

Nothing justifies my having to change the code of my extensions for versions 7.6.x and above, but I'm going to be satisfied with that, you mustn't always want to understand everything...

[1] https://github.com/prrvchr/uno/commit/a2fa9f5975a35e8447907e51b0f78ac1b1b76e17