On Wed, Jan 9, 2019 at 5:28 PM Kaipeng Zeng <
kaip...@gmail.com> wrote:
>
> Hi Dmitry,
> Thanks for your feedback!
>
> > What exactly state do you propose to capture? Do you have any
> > indication that it is useful (allows to find more bugs)?
> This simple demonstration is just a example.
> The exactly state should be determined by user but not syzkaller. Syzkaller only support a similar feature like this.
> For example, syzkaller remain a 64-bit memory for any kinds of state. And user put state they want into 64-bit memory( by writing their own ebpf)
> and feedback to fuzzer. Fuzzer handle these state like coverage siganl, if there is a new one, add the prog to the corpus.
It's hard to judge and evaluate without seeing actual uses.
Maybe there are no good uses for this at all? I don't know.
Maybe it does not provide any benefit in terms of found bugs? I don't know.
Maybe there are other, better ways to do this? E.g. adding explicit,
annotations to kernel code maintained alongside with kernel code.
And in the end the actual uses must be part of this functionality.
Just like syzkaller provides not just abstract engine to describe
kernel interfaces, but also actual descriptions for thousands of
syscalls. Without this I afraid only you will use it and nobody else
will benefit from this.
The principles that we try to follow:
- work out of-the-box
- easy to use
> > Is it possible to make it work with RLIMIT_STACK/CLONE_NEWPID?
> ebpf can work with CLONE_NEWPID. RLIMIT_STACK seems break ebpf( bcc) loading. I don't know the reason.
>
> > What is the performance impact of this tracing?
> > - performance impact (executions/sec)
> The performance impact mainly contain: ebpf load( several second), synchronization (need more test), and state handling( not so much).
> ebpf load only one time at every time the vm start.
What's the cumulative effect in number of executions per second?
> > The concerns that I have are:
> > - more complexity
> > - more complex build/setup/deploy
> If only implement as the mentioned example, it can be optional, no more complex build/setup/deploy.
Yes, but then it is also not useful for anybody.