-
Notifications
You must be signed in to change notification settings - Fork 12k
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
SIGILL with new libc qsort_r implementation in BranchFolder::MergePotentialsElt #71312
Closed
crrodriguez opened this issue
Nov 5, 2023
· 6 comments
· Fixed by #71639 or llvm/llvm-project-release-prs#771
Closed
SIGILL with new libc qsort_r implementation in BranchFolder::MergePotentialsElt #71312
crrodriguez opened this issue
Nov 5, 2023
· 6 comments
· Fixed by #71639 or llvm/llvm-project-release-prs#771
Milestone
Comments
@llvm/issue-subscribers-libc Author: Cristian Rodríguez (crrodriguez)
https://github.com/llvm/llvm-project/blob/7c1ad51e018c5a1517ca6fb58a4d7027a8bec64e/llvm/lib/CodeGen/BranchFolding.cpp#L491
Now glibc compares an object with itself, just like when _GLIBCXX_DEBUG is enabled therefore explicit unreachable triggers. this breaks at least any rustc compiler available.
|
nikic
added a commit
to nikic/llvm-project
that referenced
this issue
Nov 8, 2023
`MergePotentialElts::operator<` asserts that the two elements being compared are not equal. However, sorting functions are allowed to invoke the comparison function with equal arguments (though they usually don't for efficiency reasons). There is an existing special-case that disables the assert if _GLIBCXX_DEBUG is used, which may invoke the comparator with equal args to verify strict weak ordering. I believe libc++ also has strict weak ordering checks under some options nowadays. Most recently llvm#71312 was reported, where a change to glibc's qsort_r implementation can also result in comparison between equal elements. From what I understood this is an inefficiency that will be fixed on the glibc side as well, but I think at this point we should just remove this assertion. Fixes llvm#71312.
/cherry-pick 74a76a2 |
/branch llvm/llvm-project-release-prs/issue71312 |
llvmbot
pushed a commit
to llvm/llvm-project-release-prs
that referenced
this issue
Nov 9, 2023
`MergePotentialElts::operator<` asserts that the two elements being compared are not equal. However, sorting functions are allowed to invoke the comparison function with equal arguments (though they usually don't for efficiency reasons). There is an existing special-case that disables the assert if _GLIBCXX_DEBUG is used, which may invoke the comparator with equal args to verify strict weak ordering. I believe libc++ also has strict weak ordering checks under some options nowadays. Recently, #71312 was reported, where a change to glibc's qsort_r implementation can also result in comparison between equal elements. From what I understood, this is an inefficiency that will be fixed on the glibc side as well, but I think at this point we should just remove this assertion. Fixes llvm/llvm-project#71312. (cherry picked from commit 74a76a288562c486f377121855ef7db0386e0e43)
/pull-request llvm/llvm-project-release-prs#771 |
Pull request is still open. |
tru
pushed a commit
to llvm/llvm-project-release-prs
that referenced
this issue
Nov 14, 2023
`MergePotentialElts::operator<` asserts that the two elements being compared are not equal. However, sorting functions are allowed to invoke the comparison function with equal arguments (though they usually don't for efficiency reasons). There is an existing special-case that disables the assert if _GLIBCXX_DEBUG is used, which may invoke the comparator with equal args to verify strict weak ordering. I believe libc++ also has strict weak ordering checks under some options nowadays. Recently, #71312 was reported, where a change to glibc's qsort_r implementation can also result in comparison between equal elements. From what I understood, this is an inefficiency that will be fixed on the glibc side as well, but I think at this point we should just remove this assertion. Fixes llvm/llvm-project#71312. (cherry picked from commit 74a76a288562c486f377121855ef7db0386e0e43)
qihangkong
pushed a commit
to rvgpu/llvm
that referenced
this issue
Apr 18, 2024
`MergePotentialElts::operator<` asserts that the two elements being compared are not equal. However, sorting functions are allowed to invoke the comparison function with equal arguments (though they usually don't for efficiency reasons). There is an existing special-case that disables the assert if _GLIBCXX_DEBUG is used, which may invoke the comparator with equal args to verify strict weak ordering. I believe libc++ also has strict weak ordering checks under some options nowadays. Recently, #71312 was reported, where a change to glibc's qsort_r implementation can also result in comparison between equal elements. From what I understood, this is an inefficiency that will be fixed on the glibc side as well, but I think at this point we should just remove this assertion. Fixes llvm/llvm-project#71312.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
llvm-project/llvm/lib/CodeGen/BranchFolding.cpp
Line 491 in 7c1ad51
Now glibc compares an object with itself, just like when _GLIBCXX_DEBUG is enabled therefore explicit unreachable triggers. this breaks at least any rustc compiler available.
The text was updated successfully, but these errors were encountered: