Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Upgraded to Fedora 27, and tdbcmysql stopped working...

29 views
Skip to first unread message

Georgios Petasis

unread,
Jan 22, 2018, 2:37:36 PM1/22/18
to
Hi all,

I have upgraded my linux from Fedora 26 to 27, and I am facing problems
with tdbcmysql:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) where
#0 0x0000000000000000 in ?? ()
#1 0x00007fffe8a031a8 in ConfigureConnection (cdata=0x2956760,
interp=0x611800, objc=13, objv=0x61e618, skip=3)
at ./generic/tdbcmysql.c:1278
#2 0x00007fffe8a03695 in ConnectionConstructor (clientData=0x153a990,
interp=0x611800, context=0x61e6b0, objc=13, objv=0x61e618)
at ./generic/tdbcmysql.c:1417
#3 0x00007ffff7b6b13d in TclOO_Class_Create ()
from
/home/tcl/bawt/BawtBuild/Linux/x64/Release/Install/Tcl/lib/libtcl8.7.so
#4 0x00007ffff7b69526 in TclOOObjectCmdCore ()
from
/home/tcl/bawt/BawtBuild/Linux/x64/Release/Install/Tcl/lib/libtcl8.7.so
#5 0x00007ffff7a641d6 in TclNRRunCallbacks ()
from
/home/tcl/bawt/BawtBuild/Linux/x64/Release/Install/Tcl/lib/libtcl8.7.so
#6 0x00007ffff7a65e87 in TclEvalEx ()
from
/home/tcl/bawt/BawtBuild/Linux/x64/Release/Install/Tcl/lib/libtcl8.7.so
#7 0x00007ffff7b19150 in Tcl_FSEvalFileEx ()
from
/home/tcl/bawt/BawtBuild/Linux/x64/Release/Install/Tcl/lib/libtcl8.7.so
#8 0x00007ffff7b2066b in Tcl_MainEx ()
from
/home/tcl/bawt/BawtBuild/Linux/x64/Release/Install/Tcl/lib/libtcl8.7.so
#9 0x00000000004007c4 in main ()
(gdb)

I am suspecting that something is wrong with stubs. I suspect that the
code cannot load the mysql libraries. Anyone facing similar problems?

George

Georgios Petasis

unread,
Jan 22, 2018, 3:12:37 PM1/22/18
to
If I change file mysqlStubInit.c to also accept libmariadb.so.3, it works:

static const char *const mysqlStubLibNames[] = {
/* @LIBNAMES@: DO NOT EDIT THESE NAMES */
"mysqlclient_r", "mysqlclient", "mysql", "mariadb", NULL
/* @END@ */
};

/* ABI Version numbers of the MySQL API that we can cope with */

static const char mysqlSuffixes[][5] = {
"", ".18", ".17", ".16", ".15", ".3"
};

...

status = Tcl_LoadFile(interp, path, mysqlSymbolNames, 0,
&mysqlStubsTable, &handle);
printf("%d -> %s\n", status, Tcl_GetString(path));

Gives:

1 -> libmysqlclient_r.so
1 -> libmysqlclient_r.so.18
1 -> libmysqlclient_r.so.17
1 -> libmysqlclient_r.so.16
1 -> libmysqlclient_r.so.15
1 -> libmysqlclient_r.so.3
1 -> libmysqlclient.so
1 -> libmysqlclient.so.18
1 -> libmysqlclient.so.17
1 -> libmysqlclient.so.16
1 -> libmysqlclient.so.15
1 -> libmysqlclient.so.3
1 -> libmysql.so
1 -> libmysql.so.18
1 -> libmysql.so.17
1 -> libmysql.so.16
1 -> libmysql.so.15
1 -> libmysql.so.3
1 -> libmariadb.so
1 -> libmariadb.so.18
1 -> libmariadb.so.17
1 -> libmariadb.so.16
1 -> libmariadb.so.15
0 -> libmariadb.so.3

The directory containing libmariadb.so.3, also contains
libmysqlclient.so.18:

> ls -laF /usr/lib64/mysql/

-rwxr-xr-x. 1 root root 338792 ??? 6 02:22 libmariadb.so.3*
lrwxrwxrwx. 1 root root 15 ??? 6 02:18 libmysqlclient.so.18 ->
libmariadb.so.3*

But it is not loaded.

George
0 new messages