Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sanitizer enablement tracking issue #46349

Open
16 of 60 tasks
Keno opened this issue Aug 15, 2022 · 5 comments
Open
16 of 60 tasks

Sanitizer enablement tracking issue #46349

Keno opened this issue Aug 15, 2022 · 5 comments
Assignees
Labels
domain:ci Continuous integration

Comments

@Keno
Copy link
Member

Keno commented Aug 15, 2022

This is an issue for everything that needs to happen, so we can start regularly using the sanitizers, both on CI and elsewhere. It's quite a bit, requires some coordination and I don't want to forget everything, so a long checklist it is.

@Keno Keno added the domain:ci Continuous integration label Aug 15, 2022
@gbaraldi
Copy link
Member

What about TSAN, not sure if it's going to help anywhere, but it looks like we currently just build the julia runtime with it, nothing more.

@Keno
Copy link
Member Author

Keno commented Aug 15, 2022

What about TSAN, not sure if it's going to help anywhere, but it looks like we currently just build the julia runtime with it, nothing more.

I think tsan is mostly working, but I haven't played with it extensively yet. For now, the target here it get asan/msan working well to hopefully stop memory issues in external libraries from breaking CI as frequently as they have been.

@gbaraldi
Copy link
Member

What I meant is that we should do something with it. I believe we just build the runtime for now and maybe we should run at least the Threads testset with it on.

@gbaraldi
Copy link
Member

gbaraldi commented Aug 23, 2022

Deps to build:

  • GMP
  • LibCurl
  • LibGit2
  • LibSSH2
  • LibUV
  • LibUnwind
  • MbedTLS
  • PCRE2
  • OpenLibm
  • SuiteSparse
  • libblastrampoline
  • nghttp2
  • p7zip

@gbaraldi
Copy link
Member

Using the PR, which kind of works I've been compiling a couple of failures. The atomic failure seems to be related to padding, and a MWE is

mutable struct ARefxy{T}
    @atomic x::T
    y::T
end

struct PadIntA <: Number # internal padding
    a::Int8
    b::Int16
end

r = ARefxy{PadIntA}(PadIntA(15,12), PadIntA(15,12))
replacefield!(r, :x, PadIntA(15,11), PadIntA(15,12), :sequentially_consistent, :sequentially_consistent)

I'm not sure what the correct thing here is, maybe we should just unpoison it since we know we are moving padding around.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain:ci Continuous integration
Projects
None yet
Development

No branches or pull requests

2 participants