[odb-users] mysql crash in multithreaded application

Lukas Obermann obermann.lukas at gmail.com
Mon Jun 19 12:54:32 EDT 2017


Ok, this is good then.

One more question on session in in multiple threads.
We are creating a session once on init. Should that also be done per thread?

Allow me to share the class I am talking about.
https://github.com/xbmc/xbmc/blob/feature_odb/xbmc/dbwrappers/CommonDatabase.cpp <https://github.com/xbmc/xbmc/blob/feature_odb/xbmc/dbwrappers/CommonDatabase.cpp>
https://github.com/xbmc/xbmc/blob/feature_odb/xbmc/dbwrappers/CommonDatabase.h <https://github.com/xbmc/xbmc/blob/feature_odb/xbmc/dbwrappers/CommonDatabase.h>

All threads use that class to basically get a transaction and getting the odb::database object (which is also only created once and then shared for all).
Queries are then done like

m_cdb.getDB()->query_one...

Can that be the source of our issues?

Thanks,
Lukas


> Am 19.06.2017 um 18:44 schrieb Boris Kolpackov <boris at codesynthesis.com>:
> 
> Lukas Obermann <obermann.lukas at gmail.com> writes:
> 
>> Is has_current() considering the thread it currently is in? Means
>> can it be used to determine if the current thread has a transaction
>> already?
> 
> Yes, it can *only* be used to determine if the current thread has an
> active transaction (it uses TLS to store the current pointer).
> 
> Boris



More information about the odb-users mailing list