Re: Fuzz testing COPY FROM parsing - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Fuzz testing COPY FROM parsing
Date
Msg-id 1d761c58-2d0a-23cc-582c-d1c8784877bb@iki.fi
Whole thread Raw
In response to Re: Fuzz testing COPY FROM parsing  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: Fuzz testing COPY FROM parsing
Re: Fuzz testing COPY FROM parsing
Re: Fuzz testing COPY FROM parsing
List pgsql-hackers
On 05/02/2021 21:16, Andrew Dunstan wrote:
> 
> On 2/5/21 10:54 AM, Stephen Frost wrote:
>> * Heikki Linnakangas (hlinnaka@iki.fi) wrote:
>>> I ran it for about 2 h on my laptop with the patch I was working on [2]. It
>>> didn't find any crashes, but it generated about 1300 input files that it
>>> considered "interesting" based on code coverage analysis. When I took those
>>> generated inputs, and ran them against unpatched and patched server, some
>>> inputs produced different results. So that revealed a couple of bugs in the
>>> patch. (I'll post a fixed patched version on that thread soon.)
>>>
>>> I hope others find this useful, too.
>> Nice!  I wonder if there's a way to have a buildfarm member or other
>> system doing this automatically on new commits and perhaps adding
>> coverage for other things like the JSON code..
> 
> Not easily in the buildfarm as it is today. We can easily create modules
> for extensions and other things that don't require modification of core
> code, but things that require patching core code are a whole different
> story.

It might be possible to call the fuzzer's HF_ITER() function from a C 
extension instead. So you would run a query like "SELECT 
next_fuzz_iter()" in a loop, and next_fuzz_iter() would be a C function 
that calls HF_ITER(), and executes the actual query with SPI.

That said, I don't think it's important to run the fuzzer in the 
buildfarm. It should be enough to do that every once in a while, when 
you modify the COPY FROM code (or something else that you want to fuzz 
test). But we could easily include the test inputs generated by the 
fuzzer in the regular tests. We've usually been very frugal in adding 
tests, though, to keep the time it takes to run all the tests short.

- Heikki



pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: Fuzz testing COPY FROM parsing
Next
From: Peter Geoghegan
Date:
Subject: Re: New IndexAM API controlling index vacuum strategies