On Saturday, 15 December 2018 at 21:09:12 UTC, Sebastiaan Koppe wrote:
On Saturday, 15 December 2018 at 15:37:19 UTC, Basile B. wrote:
I think this is what Walter calls "AST poisoning" (never understood how it worked before today). And the whole parser is like this.

This poisoning kills the interest of using a fuzzer. 99% of the crashes will be in hdrgen.

As is common with fuzzing, you'll need to ensure the program crashes.

Yes this is done by piping dmd with the random code (i dont use dmd as a library for now). If the process returns something different of 0 (ok) and 1 (normal compiler error) than the random code is saved in a file:

        ...
        ProcessPipes pp = pipeProcess([Options.dc, "-"]);
        pp.stdin.writeln(src);
        pp.stdin.close;
        if (!pp.pid.wait.among(0, 1)) fileName.write(src);
        ...

Actually it would be less convenient to do that with the front end as a library, since SEGFAULTs are supposed to kill the program...




Reply via email to