Hi Noel,

Thanks for looking into it more. At least I wasn't completely crazy :)

On Friday, June 14, 2013 7:13:06 AM UTC-5, Noel Grandin wrote:
>
>
> On 2013-06-13 19:58, Andrew Helgeson wrote: 
> > 
> > Thanks for your help however I'm still running into this problem with 
> > the latest code. I built a jar from the svn repo at r4849 and it's 
> > still occurring with the same stack trace. 
> > 
>
> Hi 
>
> OK, I can reproduce this now. It only seems to happen about 1 in 5 times 
> for me, which is why I missed it the first couple of times. 
>
> Thomas, this is what seems to be happening: 
> A Page is being free, but then the code freeing the page is then later 
> acting as if it still had access to that Page. 
>
> The page is freed via the call-path: 
>      at org.h2.store.PageStore.freePage(PageStore.java:1106) 
>      at org.h2.store.PageStore.free(PageStore.java:1227) 
>      at org.h2.store.PageStore.free(PageStore.java:1207) 
>      at org.h2.index.PageBtreeNode.freeRecursive(PageBtreeNode.java:454) 
>      at org.h2.index.PageBtreeIndex.removeAllRows(PageBtreeIndex.java:272) 
>      at org.h2.index.PageBtreeIndex.truncate(PageBtreeIndex.java:262) 
>      at org.h2.table.RegularTable.truncate(RegularTable.java:402) 
>      at org.h2.result.ResultTempTable.dropTable(ResultTempTable.java:155) 
>      at org.h2.result.ResultTempTable.close(ResultTempTable.java:145) 
>      at org.h2.result.LocalResult.close(LocalResult.java:394) 
>      at org.h2.jdbc.JdbcResultSet.closeInternal(JdbcResultSet.java:201) 
>      at 
> org.h2.jdbc.JdbcStatement.closeOldResultSet(JdbcStatement.java:994) 
>      at org.h2.jdbc.JdbcStatement.close(JdbcStatement.java:243) 
>      at 
> org.h2.jdbc.JdbcPreparedStatement.close(JdbcPreparedStatement.java:1112) 
>      at 
> org.h2.test.H2CorruptionTest.doDistinctSelect(H2CorruptionTest.java:140) 
>      at org.h2.test.H2CorruptionTest.access$4(H2CorruptionTest.java:123) 
>      at org.h2.test.H2CorruptionTest$1.run(H2CorruptionTest.java:87) 
>
> And then the page is re-used via the call-path: 
>      at org.h2.util.CacheLRU.update(CacheLRU.java:134) 
>      at org.h2.store.PageStore.update(PageStore.java:1062) 
>      at org.h2.index.PageDataIndex.removeAllRows(PageDataIndex.java:395) 
>      at org.h2.index.PageDataIndex.truncate(PageDataIndex.java:377) 
>      at org.h2.table.RegularTable.truncate(RegularTable.java:402) 
>      at org.h2.result.ResultTempTable.dropTable(ResultTempTable.java:155) 
>      at org.h2.result.ResultTempTable.close(ResultTempTable.java:145) 
>      at org.h2.result.LocalResult.close(LocalResult.java:394) 
>      at org.h2.jdbc.JdbcResultSet.closeInternal(JdbcResultSet.java:201) 
>      at 
> org.h2.jdbc.JdbcStatement.closeOldResultSet(JdbcStatement.java:994) 
>      at org.h2.jdbc.JdbcStatement.close(JdbcStatement.java:243) 
>      at 
> org.h2.jdbc.JdbcPreparedStatement.close(JdbcPreparedStatement.java:1112) 
>      at 
> org.h2.test.H2CorruptionTest.doDistinctSelect(H2CorruptionTest.java:140) 
>      at org.h2.test.H2CorruptionTest.access$4(H2CorruptionTest.java:123) 
>      at org.h2.test.H2CorruptionTest$1.run(H2CorruptionTest.java:87) 
>
> Hopefully, this will provide Thomas will enough information to find the 
> fix. 
>
> I think that the problem is that PageDataIndex#removeAllRows() is 
> calling freeRecursive() on it's root Page, when it should probably only 
> be freeing the children of the root page, not the root page itself. 
> But I don't know the code well enough to be sure. 
>
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to