Title: [91721] trunk/Source/WebCore
- Revision
- 91721
- Author
- [email protected]
- Date
- 2011-07-25 16:28:39 -0700 (Mon, 25 Jul 2011)
Log Message
Fix leveldb crash when compacting during destruction
https://bugs.webkit.org/show_bug.cgi?id=64494
Patch by David Grogan <[email protected]> on 2011-07-25
Reviewed by Nate Chapin.
Only tested manually so far by following the repro instructions at
crbug.com/88944
* platform/leveldb/LevelDBDatabase.cpp:
(WebCore::LevelDBDatabase::~LevelDBDatabase):
* storage/IDBLevelDBBackingStore.cpp:
(WebCore::IDBLevelDBBackingStore::~IDBLevelDBBackingStore):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (91720 => 91721)
--- trunk/Source/WebCore/ChangeLog 2011-07-25 23:27:28 UTC (rev 91720)
+++ trunk/Source/WebCore/ChangeLog 2011-07-25 23:28:39 UTC (rev 91721)
@@ -1,3 +1,18 @@
+2011-07-25 David Grogan <[email protected]>
+
+ Fix leveldb crash when compacting during destruction
+ https://bugs.webkit.org/show_bug.cgi?id=64494
+
+ Reviewed by Nate Chapin.
+
+ Only tested manually so far by following the repro instructions at
+ crbug.com/88944
+
+ * platform/leveldb/LevelDBDatabase.cpp:
+ (WebCore::LevelDBDatabase::~LevelDBDatabase):
+ * storage/IDBLevelDBBackingStore.cpp:
+ (WebCore::IDBLevelDBBackingStore::~IDBLevelDBBackingStore):
+
2011-07-25 David Reveman <[email protected]>
[Chromium] Use correct vertex shader when rendering video layer.
Modified: trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp (91720 => 91721)
--- trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp 2011-07-25 23:27:28 UTC (rev 91720)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp 2011-07-25 23:28:39 UTC (rev 91721)
@@ -93,6 +93,9 @@
LevelDBDatabase::~LevelDBDatabase()
{
+ // m_db's destructor uses m_comparatorAdapter; order of deletion is important.
+ m_db.clear();
+ m_comparatorAdapter.clear();
}
PassOwnPtr<LevelDBDatabase> LevelDBDatabase::open(const String& fileName, const LevelDBComparator* comparator)
Modified: trunk/Source/WebCore/storage/IDBLevelDBBackingStore.cpp (91720 => 91721)
--- trunk/Source/WebCore/storage/IDBLevelDBBackingStore.cpp 2011-07-25 23:27:28 UTC (rev 91720)
+++ trunk/Source/WebCore/storage/IDBLevelDBBackingStore.cpp 2011-07-25 23:28:39 UTC (rev 91721)
@@ -126,6 +126,10 @@
IDBLevelDBBackingStore::~IDBLevelDBBackingStore()
{
m_factory->removeIDBBackingStore(m_identifier);
+
+ // m_db's destructor uses m_comparator. The order of destruction is important.
+ m_db.clear();
+ m_comparator.clear();
}
PassRefPtr<IDBBackingStore> IDBLevelDBBackingStore::open(SecurityOrigin* securityOrigin, const String& pathBaseArg, int64_t maximumSize, const String& fileIdentifier, IDBFactoryBackendImpl* factory)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes