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 h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
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