Race in WapPushManager under multi-thread environment
When multiple threads call WapPushManager functions simultaneously, it might hit race that one thread is closing a SqliteDatabase object while another thread is using it. Following is an example: Thread A Thread B call getDatabaseLocked() --- | | mDatabase is NULL,so A create Database --- | | getDatabaseLocked() return the new --- created Database --- | | --- call getDatabaseLocked() and return --- the Database created by A | | Call SQLiteDatabase.close() --- close() -> releaseReference() --- the reference count is decreased to 0 --- | | --- Attempt to call any operation of Database --- Object, but hit exception because this --- Database Object's reference count is 0 For WapPushManager, seems it always close the database object right after it open&query it, this is not necessary and would hit above race under multi-thread environment. Ticket: CYNGNOS-2973 Change-Id: I68fac046f806c8d9328fbe0d9c8a08e6bfddbef1 Signed-off-by:wangbo3 <bo.c.wang@intel.com> Signed-off-by:
chao.bi <chao.bi@intel.com> Signed-off-by:
Zhiquan Liu <zhiquan.liu@intel.com>
Loading
Please register or sign in to comment