I'm experiencing a double free in SQLite code on close when using sqlite3_deserialize. The C library complains: **free(): double free detected in tcache 2** as does valgrind complain in the sqlite3_close. Specifically I serialize the main db, and then deserialize it into the temp db. Full code is at [https://gist.github.com/rogerbinns/d11994c1d85e36c341e20f25ec491f5e](https://gist.github.com/rogerbinns/d11994c1d85e36c341e20f25ec491f5e) Extract (leaving out error checking for clarity - error checking is in gist): /* in memory db with default flags */ res = sqlite3_open_v2("", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); /* create a table so the database is not empty */ res = sqlite3_exec(db, "create table foo(x)", NULL, NULL, NULL); /* serialize */ serialized = sqlite3_serialize(db, "main", &serial_size, 0); /* copy the data */ datacopy = sqlite3_malloc64(serial_size); memcpy(datacopy, serialized, serial_size); /* free serialized (caller is responsible for freeing the returned value to avoid a memory leak) */ sqlite3_free(serialized); /* now load data into temp */ res = sqlite3_deserialize(db, "temp", datacopy, serial_size, serial_size, SQLITE_DESERIALIZE_RESIZEABLE | SQLITE_DESERIALIZE_FREEONCLOSE); sqlite3_close(db); Any ideas? Roger