[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#8777) [LMDB] Closing read cursor uses already freed transaction (MDB_VL32)



--94eb2c123fa4650778055ee78f61
Content-Type: text/plain; charset="UTF-8"

>
> Thanks for the report. Unfortunately your suggested fix means the rpage
> test will always be skipped on read-only cursors, which will break the
> rpage tracking if the txn is still alive.


Could you maybe explain a bit about rpages? Why does mdb_cursor_close need
to unref pages, but not mdb_cursor_renew? If closing a transaction does not
clean up rpages, I would have expected mdb_cursor_renew would have to do.
And why does setting MDB_VL32 affect rpages in the first place? To my
understanding, MDB_VL32  is about using 64 bits also on 32 bit CPUs, so a
differences on page handling seem surprising at first sight.

Thanks,
Markus

--94eb2c123fa4650778055ee78f61
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex">Thanks for the report. Unfort=
unately your suggested fix means the rpage test will always be skipped on r=
ead-only cursors, which will break the rpage tracking if the txn is still a=
live.</blockquote><div><br></div><div>Could you maybe explain a bit about r=
pages? Why does=C2=A0<span style=3D"font-size:12.8px">mdb_cursor_close=C2=
=A0</span>need to unref pages, but not mdb_cursor_renew? If closing a trans=
action does not clean up rpages, I would have expected mdb_cursor_renew wou=
ld have to do. And why does setting MDB_VL32 affect rpages in the first pla=
ce? To my understanding, MDB_VL32=C2=A0 is about using 64 bits also on 32 b=
it CPUs, so a differences on page handling seem surprising at first sight.<=
/div><div><br></div><div>Thanks,</div><div>Markus</div><div><br></div></div=
></div></div>

--94eb2c123fa4650778055ee78f61--