Re: [RESEND PATCH 0/5] perf core: Support overwrite ring buffer

From: Ingo Molnar
Date: Tue Mar 08 2016 - 10:54:40 EST



* Dmitry Vyukov <dvyukov@xxxxxxxxxx> wrote:

> > so, according to the error message it wants a writable directory. Lets try it that
> > way:
> >
> > triton:~> mkdir go
> > triton:~>
> > triton:~> export GOPATH=/home/mingo/go/
> > triton:~> go get github.com/google/syzkaller
> > can't load package: package github.com/google/syzkaller: no buildable Go source files in /home/mingo/go/src/github.com/google/syzkaller
>
> Yes, GOPATH needs to be set a writable dir.
> You can ignore "can't load package" error. The goal of that step is
> checkout syzkaller with all dependencies into correct dirs under
> GOPATH. That's already done by now.
> Or you can do (/... at the end):
> $ go get github.com/google/syzkaller/...
> That will checkout and build.
> Either way you can continue with the make step.

Cool, the '/...' trick works.


> > looks like someone wants 'Go' to be used as little as possible! ;-)
>
> You probably did not observe recently a noobie trying to build a C
> project with sufficiently-complicate-build-system and a bunch of
> dependencies that needs to be on specific, unknown revisions, and that
> still does not compile with you compiler and does not link with your
> linker, and then of course target machine has a wrong glibc version :)

Nah, old Linux tools very much suck, we know that and we suffer from it.

But new tools should not suck! :-)

So, going from the description at:

http://lkml.kernel.org/r/CACT4Y+Ym0TZLkmRrM0ZGgLpu8kqS-YjoWTMrvaLz=tx2tnyO3w@xxxxxxxxxxxxxx

I now have it built, and created $GOPATH/src/github.com/google/syzkaller/perf.cfg
with:


triton:~/go/src/github.com/google/syzkaller> cat perf.cfg
{
"http": "localhost:50000",
"workdir": "/home/mingo/go/src/github.com/google/syzkaller/workdir",
"syzkaller": "/home/mingo/go/src/github.com/google/syzkaller",
"vmlinux": "-",
"type": "local",
"count": 1,
"procs": 16,
"nocover": true,
"nodropprivs": true,
"enable_syscalls": [
"getpid",
"perf_event_open",
"ioctl$PERF*",
"prctl$void",
"bpf$*",
"sched_yield"
]
}

Then I tried to do:

$ bin/syz-manager -config perf.cfg

in ~/go/src/github.com/google/syzkaller, but that doesn't work because there's no
'bin' directory:

triton:~/go/src/github.com/google/syzkaller> bin/syz-manager -config perf.cfg
bash: bin/syz-manager: No such file or directory

So that should really read something like:

cd ~/go
bin/syz-manager -config src/github.com/google/syzkaller/perf.cfg

next roadblock:

fomalhaut:~/go> bin/syz-manager -config src/github.com/google/syzkaller/perf.cfg
2016/03/08 16:53:44 bad config syzkaller param: can't find bin/syz-fuzzer

so how do I proceed from here?

Thanks,

Ingo