--- ./lib/rpmdb.c.orig 2020-05-28 10:04:25.037136686 +0000 +++ ./lib/rpmdb.c 2020-09-30 12:23:50.708547165 +0000 @@ -387,9 +387,11 @@ int rpmdbClose(rpmdb db) { rpmdb * prev, next; int rc = 0; + int dbmode; if (db == NULL) goto exit; + dbmode = db->db_mode; prev = &rpmdbRock; while ((next = *prev) != NULL && next != db) @@ -423,7 +425,7 @@ int rpmdbClose(rpmdb db) db = _free(db); - if (rpmdbRock == NULL) { + if (rpmdbRock == NULL && (dbmode & (O_RDWR|O_WRONLY)) != 0) { rpmsqActivate(0); } exit: @@ -510,7 +512,7 @@ static int openDatabase(const char * pre int justPkgs = (db->db_flags & RPMDB_FLAG_REBUILD) && ((db->db_mode & O_ACCMODE) == O_RDONLY); /* Enable signal queue on the first db open */ - if (db->db_next == NULL) { + if (db->db_next == NULL && (db->db_mode & (O_RDWR|O_WRONLY)) != 0) { rpmsqActivate(1); }