[mythtv] Android 32-bit failure
Mark Spieth
mark at digivation.com.au
Tue Feb 11 22:00:33 UTC 2020
On 12/02/2020 4:54 am, Peter Bennett wrote:
>
>
> On 2/10/20 4:14 PM, Mark Spieth wrote:
>> On 2/11/2020 7:54 AM, Peter Bennett wrote:
>>> Hi Mark
>>>
>>> the gdb.sh script is having some problems. It complains that "target
>>> remote :5039" in gdb.setup is invalid. However I can get it going by
>>> manually typing in "target remote localhost:5039". It also objects
>>> if I have "target remote localhost:5039" in gdb.setup.
>>>
>>> After typing that in manually it is still not working correctly. It
>>> does not have its line numbers, it seems to be reading the libs from
>>> android instead of using the local ones we have provided in so32.
>>>
>>> Anyway after typing that in manually I got to the place of the
>>> SIGBUS error. It is in trying to connect to the database. Perhaps we
>>> need to go back to mysql instead of mariadb:
>>>
>>> Thread 11 "qtMainLoopThrea" received signal SIGBUS, Bus error.
>>> [Switching to Thread 4746.4972]
>>> 0x8e103f0e in ma_send_connect_attr () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmariadb.so
>>> (gdb) bt
>>> #0 0x8e103f0e () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmariadb.so
>>> #1 0x8e113d24 in ?? () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmariadb.so
>>> #2 0x8e113f1e in ?? () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmariadb.so
>>> #3 0x8e11392a in run_plugin_auth () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmariadb.so
>>> #4 0x8e104cc8 in mthd_my_real_connect () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmariadb.so
>>> #5 0x870f5b96 in ?? ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libplugins_sqldrivers_qsqlmysql_armeabi-v7a.so
>>> #6 0x8fdc20c0 in QSqlDatabase::open() ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libQt5Sql_armeabi-v7a.so
>>> #7 0x8c53e79c in MSqlDatabase::OpenDatabase(bool) ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmythbase-32.so
>>> #8 0x8c541b48 in MDBManager::popConnection(bool) ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmythbase-32.so
>>> #9 0x8c546ae8 in MSqlQuery::testDBConnection() ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmythbase-32.so
>>> #10 0x8bc847fc in MythContextPrivate::TestDBconnection(bool) ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmyth-32.so
>>> #11 0x8bc7f6f0 in MythContextPrivate::FindDatabase(bool, bool) ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmyth-32.so
>>> #12 0x8bc7ed68 in MythContextPrivate::Init(bool, bool, bool, bool) ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmyth-32.so
>>> #13 0x8bc8b200 in MythContext::Init(bool, bool, bool, bool) ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmyth-32.so
>>> --Type <RET> for more, q to quit, c to continue without paging--
>>> #14 0x8aa29010 in main () from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libmythfrontend_armeabi-v7a.so
>>> #15 0x8fd47e70 in ?? ()
>>> from
>>> target:/data/app/org.mythtv.mythfrontend-2/lib/arm/libplugins_platforms_qtforandroid_armeabi-v7a.so
>>> #16 0xa980c316 in oatexec () from
>>> target:/data/app/org.mythtv.mythfrontend-2/oat/arm/base.odex
>>> Backtrace stopped: previous frame identical to this frame (corrupt
>>> stack?)
>>
>> Wow. Didnt expect that. First I would roll back to using maria
>> connector 2.1.0 and see. Should only be a comment out in the version
>> since everything else is there. Try only remake mariadb and then
>> clean apk or else everything just to be safe.
>>
>> Line numbers may still be available in libs/maria.../ somewhere. Or
>> just do a disass on the top level and we should be able to figure out
>> which line in ma_send_connect_attr is the culprit. I did an objdump
>> but am not sure of the load address of the lib. Probably one of the
>> memcpys is my guess.
>>
>> Cant test this right now.
>>
>> Mark
>>
>>
> After some fixes to gdb.sh I get a better back trace. gdb refuses to
> accept the "target temote" in the gdb.setup file, so I added an echo
> "RUN THIS COMMAND" and you have to copy/paste the command. I will push
> the changes to gdb.sh and to makelibs.sh. I have not yet tried your
> suggestion of using a different version of mariadb. You can see here
> it is failing in "len= *(size_t *)p"
>
> Thread 11 "qtMainLoopThrea" received signal SIGBUS, Bus error.
> [Switching to Thread 10748.10776]
> ma_send_connect_attr (mysql=0xa542a000,
> buffer=0xa558ee64 "Pin>cat</SecurityPin>\n
> <USN>uuid:bcfa7f52-c934-480a-94c0-cceb4fc7d320::urn:schemas-mythtv-org:device:MasterMediaServer:1</USN>\n
> </DefaultBackend>\n </MythFrontend>\n <UDN>\n <Media"...)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/libmariadb.c:1486
> 1486 len= *(size_t *)p;
> (gdb) bt
> #0 ma_send_connect_attr (mysql=0xa542a000,
> buffer=0xa558ee64 "Pin>cat</SecurityPin>\n
> <USN>uuid:bcfa7f52-c934-480a-94c0-cceb4fc7d320::urn:schemas-mythtv-org:device:MasterMediaServer:1</USN>\n
> </DefaultBackend>\n </MythFrontend>\n <UDN>\n <Media"...)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/libmariadb.c:1486
> #1 0x909e1d24 in send_client_reply_packet (mpvio=0x927ace98,
> data=0x927ace57
> "\237L\030\227\232\230l\360\264\331\371\233X\374\316\325e\201c\242\222\v\333D\377",
> data_len=<optimized out>)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/my_auth.c:421
> #2 client_mpvio_write_packet (mpv=0x927ace98,
> pkt=0x927ace57
> "\237L\030\227\232\230l\360\264\331\371\233X\374\316\325e\201c\242\222\v\333D\377",
> pkt_len=<optimized out>)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/my_auth.c:520
> #3 0x909e1f1e in native_password_auth_client (vio=0x927ace98,
> mysql=<optimized out>)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/my_auth.c:138
> #4 0x909e192a in run_plugin_auth (mysql=0xa542a000, data=0x8a2ad03f
> "=79X206aeWbheAVj2ZO[", data_len=21,
> data_plugin=0x8a2ad054 "mysql_native_password", db=0xa5430af0
> "mythdbtmst")
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/my_auth.c:652
> #5 0x909d2cc8 in mthd_my_real_connect (mysql=<optimized out>,
> host=0xa5430b90 "192.168.0.188", user=0xa5430b50 "mythtmst",
> passwd=0xa5430e30 "mythtv", db=0xa5430af0 "mythdbtmst", port=3306,
> unix_socket=<optimized out>, client_flag=65664)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/libmariadb.c:2048
> #6 0x8a341b96 in QMYSQLDriver::open(QString const&, QString const&,
> QString const&, QString const&, int, QString const&) ()
> from
> /home/peter/proj/github.com/MythTV/packaging/android/so32/libplugins_sqldrivers_qsqlmysql_armeabi-v7a.so
> #7 0x926900c0 in QSqlDatabase::open() () from
> /home/peter/proj/github.com/MythTV/packaging/android/so32/libQt5Sql_armeabi-v7a.so
> #8 0x8ef0b79c in MSqlDatabase::OpenDatabase (this=0xa5479440,
> skipdb=false) at mythdbcon.cpp:167
> #9 0x8ef0eb48 in MDBManager::popConnection (this=0xa547b4b0,
> reuse=true) at mythdbcon.cpp:340
> #10 0x8ef13ae8 in MSqlQuery::testDBConnection () at mythdbcon.cpp:854
> #11 0x8e7507fc in MythContextPrivate::TestDBconnection
> (this=0xa547b960, prompt=true) at mythcontext.cpp:935
> #12 0x8e74b6f0 in MythContextPrivate::FindDatabase (this=0xa547b960,
> prompt=false, noAutodetect=false) at mythcontext.cpp:441
> #13 0x8e74ad68 in MythContextPrivate::Init (this=0xa547b960, gui=true,
> promptForBackend=false, noPrompt=false, ignoreDB=false)
> at mythcontext.cpp:357
> #14 0x8e757200 in MythContext::Init (this=0xa5431130, gui=true,
> promptForBackend=false, disableAutoDiscovery=false, ignoreDB=false)
> at mythcontext.cpp:1635
> #15 0x8d4f5010 in main (argc=3, argv=0x927ae838) at main.cpp:1925
> #16 0x92615e70 in startQtApplication(_JNIEnv*, _jclass*) ()
> from
> /home/peter/proj/github.com/MythTV/packaging/android/so32/libplugins_platforms_qtforandroid_armeabi-v7a.so
> #
>
> (gdb) bt full
> #0 ma_send_connect_attr (mysql=0xa542a000,
> buffer=0xa558ee64 "Pin>cat</SecurityPin>\n
> <USN>uuid:bcfa7f52-c934-480a-94c0-cceb4fc7d320::urn:schemas-mythtv-org:device:MasterMediaServer:1</USN>\n
> </DefaultBackend>\n </MythFrontend>\n <UDN>\n <Media"...)
> at
> /home/peter/proj/github.com/MythTV/packaging/android/libs/mariadb-connector-c-2.3.7-src/libmariadb/libmariadb.c:1486
> p = 0x8a2b326f "\a"
> len = 3
> i = 0
Try this patch to mariadb
diff --git a/libmariadb/libmariadb.c b/libmariadb/libmariadb.c
index 2f0953f..c0e57bf 100644
--- a/libmariadb/libmariadb.c
+++ b/libmariadb/libmariadb.c
@@ -1483,7 +1483,7 @@ uchar *ma_send_connect_attr(MYSQL *mysql, uchar
*buffer)
memcpy(buffer, p, len);
buffer+= len;
p+= len;
- len= *(size_t *)p;
+ memcpy(&len, p, sizeof(len));
buffer= mysql_net_store_length(buffer, len);
p+= sizeof(size_t);
memcpy(buffer, p, len);
If happy,
git diff > ../../patches/mariadb-2.3.7.patch
and commit
Mark
More information about the mythtv-dev
mailing list