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...