Closed kaigai closed 2 months ago
pgstrom_devcache_invalidator が呼ばれると、まだ参照中の devtype, devfunc のキャッシュがあっても解放されてしまう。
pgstrom_devcache_invalidator
relation_openrv() から AcceptInvalidationMessages() が呼ばれるパスが存在するので、cache invalidationの方法を考えないとダメ。 main.c に遅延解放の仕組みを入れるなどして、キャッシュ解放のタイミングを後にずらすなど。
relation_openrv()
AcceptInvalidationMessages()
タイミング問題なので、再現も結構難しい。
MemoryContextの親を付け替えて、PortalContextの破棄タイミングで解放されるように修正。 これで、Path-construction中のmemory-contextの破壊は防がれる。
あー、しかし。厳密に大丈夫かどうかは微妙かも。。。。
pgstrom_devcache_invalidator
が呼ばれると、まだ参照中の devtype, devfunc のキャッシュがあっても解放されてしまう。relation_openrv()
からAcceptInvalidationMessages()
が呼ばれるパスが存在するので、cache invalidationの方法を考えないとダメ。 main.c に遅延解放の仕組みを入れるなどして、キャッシュ解放のタイミングを後にずらすなど。タイミング問題なので、再現も結構難しい。