Problem description: I'm trying to connect via odbc to a mdb file using the base wizard, all seems to go fine, also connection test, but just after I choose where to save the odb file and click save, libreoffice crashes, produced file (odb) if opened makes libreoffice crash again. These are version programs and configurations involved : I was trying to connect to an existing mdb (MS Access) database file using unixodbc and libreoffice-base, I've got unixodbc , undixodbc-bin and libmdbodbc1 packages installed I set the odbc as following : /etc/odbc.ini [Pippo] Description = mine database Driver = /usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so.1 Database = /home/magowiz/pippo.mdb /etc/odbcinst.ini [MDBTools] Description = MDBTools Driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so.1 Setup = /usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so.1 Usage = 1 FileUsage = 1 UsageCount = 2 I use the connection wizard into libreoffice base : I can successfully test mine connection but while I'm saving the odb file the whole program crashes and close itself It follows distro and software versions : $ lsb_release -rd Description: Ubuntu 13.10 Release: 13.10 apt-cache policy libreoffice-base libreoffice-base: Installed: 1:4.1.2~rc3-0ubuntu1 Candidate: 1:4.1.2~rc3-0ubuntu1 apt-cache policy unixodbc unixodbc: Installed: 2.2.14p2-5ubuntu4 Candidate: 2.2.14p2-5ubuntu4 apt-cache policy libmdbodbc1 libmdbodbc1: Installed: 0.7-3 Candidate: 0.7-3 Steps to reproduce: 1. configure like described above unixodbc to point to mdb file 2. open libreoffice base and choose to connect via ODBC to db name choosen while configurating unixodbc 3. choose where to save the odb file and then click save Current behavior: It crashes just after save button is clicked Expected behavior: it should open libreoffice base main interface to make me able to work with the database The same file can be opened by libreoffice windows version on windows 7 Operating System: Ubuntu Version: 4.1.3.2 release
Could you please attach the .odb file that makes it crash?
Created attachment 90103 [details] odb file that points to mdb database
Created attachment 90104 [details] mdb file that causes the issue.
(In reply to comment #1) > Could you please attach the .odb file that makes it crash? I attached both mdb and odb file since the odb points to real database : mdb file.
Reproduced on two different machines: - libreoffice 4.1.3.2 (Debian package): infinite loop (memory consumption) - libreoffice 4.1 my own development tree: segfault in ODBC code
Crash goes away (on Debian) after upgrading unixodbc to 2.3.1-1. So until hint to the contrary, seems to be a bug in UnixODBC -> NOTOURBUG. It does not work though, the list of tables is empty. This seems to be a mdbtools bug, because isql also cannot get the list of tables. Try: echo help | isql Pippo | less -SIM It "finds" 10 tables, but no info on them (no name, ...). The SQLTables function seems to be not implemented in mdbtools, or buggy on your particular example or ... (SQLGetData returns an error code, but subsequent SQLGetDiagRec returns all-zero SQLSTATE, no error string, ...).
(In reply to comment #5) > Reproduced on two different machines: > - libreoffice 4.1.3.2 (Debian package): infinite loop (memory consumption) This was with mdbtools 0.7.1-1. This also is a mdbtools bug: calling SQLGetData on column 4 (TABLE_TYPE) of SQLTables returns SQL_NO_TOTAL in StrLen_or_IndPtr, indicating that there is more data to return, but the driver does not know how much. In this case, it returned all the data, namely "SYSTEM TABLE", so it should set StrLen_or_IndPtr to the length of that (that is, 12). Cf http://msdn.microsoft.com/en-us/library/ms715441%28v=vs.85%29.aspx Neither SQL_NO_TOTAL nor zero can be returned on the last valid call to retrieve data from a column, because the application would then have no way of knowing how much of the data in the application buffer is valid.