| From: | Michael Paquier <michael(at)paquier(dot)xyz> | 
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
| Cc: | Alexander Lakhin <exclusion(at)gmail(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: BUG #16801: Invalid memory access on WITH RECURSIVE with nested WITHs | 
| Date: | 2021-02-26 01:17:50 | 
| Message-ID: | YDhMPvDL4iLP6gLo@paquier.xyz | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-bugs | 
On Thu, Feb 25, 2021 at 10:19:43AM -0500, Tom Lane wrote:
> For me, the example I gave fails in a non-debug build.  With the code as
> of HEAD, I get "ERROR: stack depth limit exceeded" or a segfault.  With
> your patch applied, it complains about w6 not having the correct form for
> a recursive CTE.
Yes, same here for the test stressing makeDependencyGraphWalker().
The second test I posted for checkWellFormedRecursionWalker() passes
on HEAD in a non-debug build, and triggers an assertion with debug
builds.  So the second test requires CLOBBER_FREED_MEMORY but not
DEBUG_LIST_MEMORY_USAGE.  That's not as good as the first one, but I
would vote for having this second test than none to stress more the
list handling when looking after invalid self-references in a CTE.
This gives me the attached.
I would rather have both tests in the version committed, but if you
think that this addition is not necessary I won't fight hard either :)
--
Michael
| Attachment | Content-Type | Size | 
|---|---|---|
| bug-16801-fix-v2.patch | text/x-diff | 4.7 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2021-02-26 01:31:26 | Re: BUG #16801: Invalid memory access on WITH RECURSIVE with nested WITHs | 
| Previous Message | Tom Lane | 2021-02-25 21:40:32 | Re: BUG #16897: gssenc request slow connection |