Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 18:56
    LebedevRI commented #6809
  • 18:50
    LebedevRI commented #6810
  • 18:48

    alexreinking on main

    [CMake] Mark multi-threaded tes… (compare)

  • 18:48
    alexreinking closed #6810
  • 18:47
    alexreinking synchronize #6821
  • 18:47

    alexreinking on drop-python

    Add dummy `test_python` target … (compare)

  • 18:42
    alexreinking commented #6821
  • 18:34
    steven-johnson commented #6792
  • 18:33
    steven-johnson commented #6802
  • 18:33
    steven-johnson commented #6809
  • 18:32
    steven-johnson commented #6810
  • 18:01
    alexreinking commented #5374
  • 17:50
    alexreinking edited #5374
  • 17:50
    alexreinking edited #5374
  • 17:48
    steven-johnson commented #6777
  • 17:47
    steven-johnson synchronize #6777
  • 17:47

    steven-johnson on jit-calls

    Add tests for calling `Abstract… (compare)

  • 17:28
    alexreinking synchronize #6821
  • 17:28

    alexreinking on drop-python

    Restore test_li2018 in Makefile… (compare)

  • 17:22
    alexreinking synchronize #6821
Roman Lebedev
@LebedevRI
are there any success stories of halide-enabled projects and fuzzing? i'm guessing the C_BACKEND is catch-all escape hatch for this?
Alex Reinking
@alexreinking:matrix.org
[m]
The rungen stuff has a random input generator. You have to provide the output extents though
Not sure why C_BACKEND would be relevant?
You generally don't want to go through the C backend if LLVM has a backend for your target
Roman Lebedev
@LebedevRI
no, i mean, what if i have some code that is currently being fuzzed as part of oss-fuzz project, and now i want to replace some pieces of that code with halide. how do i retain fuzzing coverage?
Alex Reinking
@alexreinking:matrix.org
[m]
I don't know, how does oss-fuzz measure coverage?
Roman Lebedev
@LebedevRI
i mostly mean coverage in general sense. for plain c code, the ir would then be instrumented by some pass as instructed by clang, but here as i can tell there's only asan option
s/option/feature/
well, and tsan
Alex Reinking
@alexreinking:matrix.org
[m]
We could look into enabling that pass via a feature flag, assuming one exists at the LLVM level
so msan seems obvious-ish
Alex Reinking
@alexreinking:matrix.org
[m]
Sure. We could look into this if it appeases fuzzing tools generally.
Roman Lebedev
@LebedevRI
the main one is ModuleSanitizerCoveragePass
let me just file a metabug first
Alex Reinking
@alexreinking:matrix.org
[m]
"Coverage" is kind of a weird metric for a language like Halide, though. Programs aren't very divergent. I would guess that for a "typical" pipeline, nearly every input would produce the same coverage profile.
Roman Lebedev
@LebedevRI
sure, but fuzzers need that to know if they are hitting the actual code or not
Alex Reinking
@alexreinking:matrix.org
[m]
Like, maybe you can do some weird things with RDom::where. External stages need to be instrumented separately, anyway.
Sure. I think that's a good enough reason
Roman Lebedev
@LebedevRI
note that i'm not saying: please implement this now; i would look into it myself if it's reasonable and maybe with some guidance if needed
Alex Reinking
@alexreinking:matrix.org
[m]
Gotcha
Roman Lebedev
@LebedevRI
so i guess i should just try and see what it would take to add msan support
Alex Reinking
@alexreinking:matrix.org
[m]
Yes, hopefully not too much.
Roman Lebedev
@LebedevRI
alexreinking: thank you
Roman Lebedev
@LebedevRI
ah, hmm, so there is already some msan support, missed that
Yeah, we have m/t/asan feature flags
Roman Lebedev
@LebedevRI
yeah, somehow i didn't see msan
Alex Reinking
@alexreinking:matrix.org
[m]
It's not next to the others for some reason 🤷‍♂️
I was surprised when you said there was no msan support... I should have checked.
Roman Lebedev
@LebedevRI
i mean, msan pass isn't being run in CodeGen_LLVM::optimize_module(), unlike asan/tsan, there's custom instrumentation that all input buffers are defined, which is actually the right way do to this
Alex Reinking
@alexreinking:matrix.org
[m]
So you just need the coverage sanitizer still?
Roman Lebedev
@LebedevRI
"just"
Alex Reinking
@alexreinking:matrix.org
[m]
🙂
Roman Lebedev
@LebedevRI
there's also the question of translating -fsanitize to halide features
Alex Reinking
@alexreinking:matrix.org
[m]
In what sense?
Halide compiled with a sanitizer doesn't need to always produce binaries with that sanitizer
And vice versa...
Roman Lebedev
@LebedevRI
sure, that's not the question
Alex Reinking
@alexreinking:matrix.org
[m]
Okay, then where is this translation taking place?
Roman Lebedev
@LebedevRI
what i mean is, when i pass CFLAGS=-fsanitize=address, clang enables ASAN. will that just magically also enable halide's asan feature
?
Alex Reinking
@alexreinking:matrix.org
[m]
No, that's what I'm saying. It would be wrong to do that
Roman Lebedev
@LebedevRI
nono, not when compiling halide itself
e.g. when compiling halide/apps
Alex Reinking
@alexreinking:matrix.org
[m]
Clang doesn't read the CFLAGS env var AFAIK. CMake and Makefile default rules honor that variable when constructing compiler command lines.
Roman Lebedev
@LebedevRI
sure, i used env variable as an example
Alex Reinking
@alexreinking:matrix.org
[m]
I could see introducing Halide_TARGET_FEATURES as a CMake (package) variable to allow a user to add some features globally (through add_halide_library)
1 reply
-DHalide_TARGET_FEATURES=msan at the command line or set() it in a toolchain file
The sanitizers are toolchain-y anyway... that approach makes sense to me