Skip to content

ODR vialotion in mlir-cpu-runner + libmlir_async_runtime.so #61856

@banach-space

Description

@banach-space

Hi,

The following RUN line from async-group.mlir leads to ODR violation:

// RUN: | mlir-cpu-runner  \
// RUN:     -e main -entry-point-result=void -O0 \
// RUN:     -shared-libs=%mlir_c_runner_utils  \
// RUN:     -shared-libs=%mlir_runner_utils  \
// RUN:     -shared-libs=%mlir_async_runtime  \

Specifically, on my development AArch64 machine running Linux (I doubt the platform actually matters), I see the following:

$ nm libmlir_async_runtime.so | grep EnableABIBreakingChecks

000000000038cb80 B _ZN4llvm23EnableABIBreakingChecksE

$ nm mlir-cpu-runner | grep EnableABIBreakingChecks
000000000474364c B _ZN4llvm23EnableABIBreakingChecksE

And indeed, ASan is able to identify the invocation from async-group.mlir as ODR violation, see sanitizer-x86_64-linux-fast.

This patch implements a workaround that helps silence ASan (there's also a bit more discussion there):

However, that's not a proper solution. To me it feels that libmlir_async_runtime.so should be refactored to fix this, but this isn't really my area of expertise and recommendations (as well as volunteers) are welcome :)

CC @lhames @hctim

-Andrzej

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions