On Thu, 9 Feb 2023 at 17:38, Ryan Hancock <
kryan....@gmail.com> wrote:
>
> Ahh yea the Central Limit Theorem loves showing up. I assumed this to be the case when looking at individual system calls, thats why I think of any experiment as always a lower bound to a number rather
> then the number itself. I sadly, dont have access to 30 machines or 30 days. Would be interesting if the harmonic mean across system calls actually had significant changes though.... lots of fun experiments that I may
> just run in the background haha.
>
> For point 2, im a little more confused by that, what do you mean if some code is covered by 2+ sys calls it will be attributed 1 randomly. For example if I have a vnode_lock code block used extensively everywhere will it
> be only attributed two 1 system call?
+syzkaller mailing list
If some is covered by, say, read and write system calls, then in the
syz-manager per-syscall coverage report it will be attributed to
either read or write, but not both. Though, 1 line in a function can
be attributed to read, while another line in the same function can be
attributed to write. Whichever syscall call gets to cover this line
first in this run.
> On Thu, Feb 9, 2023 at 3:54 AM Dmitry Vyukov <
dvy...@google.com> wrote:
>>
>> On Thu, 9 Feb 2023 at 00:17, Ryan Hancock <
kryan....@gmail.com> wrote:
>> >
>> > Did that quick experiment and look at the coverage of mmap for example, and checked if various vfs_syscalls.c functions were being fired, seems like nothing stood out so I think you are right that when you select a specific function it only include the coverage of that function. One thing that I noticed however,
>> > is that the amount of lines covered after two hours in many of the calls is much smaller. Most likely to the "coverage-guided" part of syzkaller? To be honest I have not looked much into that side of things so don't know much about
>> > how the fuzzer chooses executions. Seems by disabling other coverage might be a way to force kind of a depth first approach to the fuzzer for these system calls - i could be also completely off base haha.
>>
>> 2 points:
>> 1. There are lots of variation between runs. We concluded that to get
>> any meaningful A/B comparison one needs to do >30 syz-manager runs for
>> A and B each with 10 VMs and 12/24h duration, then aggregate these
>> numbers. Only statistically significant differences will matter.
>> If we compare just 2 individual runs, that's pretty much random numbers.
>>
>> 2. If some code is covered by 2+ syscalls, then it will be attributed
>> to only 1 of them randomly. This may explain part of what you see.
>> However, it should not affect the cases you described, e.g. ioctl
>> covers tons of code that is coverable by any other syscalls.
>>
>>
>>
>> > On Wed, Feb 8, 2023 at 1:56 PM Ryan Hancock <
kryan....@gmail.com> wrote:
>> >>
>> >> Hmm, interesting, going to try and confirm this by re-running some things and see if my modified version of syz-executor which just turns on coverage for a selected system call gets similar results to the default one running for the same amount of time.
>> >> I remember when I first did this before, it was briefly and I saw some weirdness sections of code being highlighted, it could have been my own bias getting in the way there however.
>> >>
>> >> In the meantime, i'll search some of the cover pkg code to see if I can parse how this filtering is done. Appreciate the responses
>> >>
>> >> On Wed, Feb 8, 2023 at 1:31 PM Dmitry Vyukov <
dvy...@google.com> wrote:
>> >>>
>> >>> On Wed, 8 Feb 2023 at 18:40, Ryan Hancock <
kryan....@gmail.com> wrote:
>> >>> >
>> >>> > Correct me if I'm wrong, but when looking through that particular feature, it pretty much sorts on all execution that have that specific system call?
>> >>>
>> >>> IIRC it should coverage from just that system call.
>> >>>
>> >>> > Maybe I misread the code - but if I am correct, then that can make results deceiving, as now you are subject to the noise of other system calls. Suppose there is a relatively small system call in terms of the basic blocks it touches,
>> >>> > it would be hard to determine this, if it was contained executions with one that touches many basic blocks.