-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
mark start_task
with ".cfi_undefined rip"
#23074
Labels
help wanted
Indicates that a maintainer wants help on an issue or pull request
Comments
So maybe that's why #14727 still had some unannotated frames. |
@vtjnash I will take this up. Need more info on where to add annotations. |
We set the RIP to 0 so it shouldn't point to garbage at least... |
I think it's just the |
ElOceanografo
pushed a commit
to ElOceanografo/julia
that referenced
this issue
May 4, 2021
antoine-levitt
pushed a commit
to antoine-levitt/julia
that referenced
this issue
May 9, 2021
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 10, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Feb 14, 2022
Fiber call-chains end at `coro_init`, but unwinders don't stop there, trying to use `coro_init` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_init`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 7, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for gcc on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 11, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 11, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=bug fix NO_CHANGELOG=bug fix
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 11, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 13, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 16, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 17, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 17, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 17, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 17, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 18, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 18, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 18, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 18, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. Zero out rbp on x86_64 (also marks end of call-chain for unwinders): this requires removing "-fno-omit-frame-pointer" compiler flag, which is anyway redundant. Also remove redundant "-fno-stack-protector" compiler flag. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 18, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. Zero out rbp on x86_64 (this also marks end of call-chain for unwinders): this requires setting "-fomit-frame-pointer" compile flag for compiling coro.c. Remove redundant "-fno-omit-frame-pointer" and "-fno-stack-protector" compile flags. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 18, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. Zero out rbp on x86_64 (this also marks end of call-chain for unwinders): this requires setting "-fomit-frame-pointer" compile flag for compiling coro.c. Remove redundant "-fno-omit-frame-pointer" and "-fno-stack-protector" compile flags. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb=ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27bf8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbded0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 19, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/ sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb =ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_6 4/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e 67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27b f8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbde d0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/ libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba 7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 25, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it for clang. Zero out rbp on x86_64 (to conform to x86_64 ABI): this requires setting "-fomit-frame-pointer" compile flag for coro.c. Remove redundant "-fno-omit-frame-pointer" and "-fno-stack-protector" compile flags for other Tarantool sources. For some reason unwinders ignore platform ABIs regarding ending of call-chains: instead of trying to follow platform ABIs, explicitly invalidate the topmost (`coro_{init, startup}`) stack frame information for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb=ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27bf8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbded0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
CuriousGeorgiy
added a commit
to CuriousGeorgiy/tarantool
that referenced
this issue
Mar 25, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it if ENABLE_BACKTRACE is set during configuration. Zero out rbp on x86_64 (to conform to x86_64 ABI): this requires setting "-fomit-frame-pointer" compile flag for coro.c. Backtrace collection from inactive fiber based on pseudo context-switch relied on the stack frame structure: remove redundant "-fno-omit-frame-pointer" and "-fno-stack-protector" compile flags for other Tarantool sources. For some reason unwinders ignore platform ABIs regarding ending of call-chains: explicitly invalidate the topmost (`coro_{init, startup}`) current frame information (CFI) for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb=ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27bf8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbded0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba7dd3857aba8 Needed for tarantool#4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
locker
pushed a commit
to tarantool/tarantool
that referenced
this issue
Mar 29, 2022
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylladb#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it if ENABLE_BACKTRACE is set during configuration. Zero out rbp on x86_64 (to conform to x86_64 ABI): this requires setting "-fomit-frame-pointer" compile flag for coro.c. Backtrace collection from inactive fiber based on pseudo context-switch relied on the stack frame structure: remove redundant "-fno-omit-frame-pointer" and "-fno-stack-protector" compile flags for other Tarantool sources. For some reason unwinders ignore platform ABIs regarding ending of call-chains: explicitly invalidate the topmost (`coro_{init, startup}`) current frame information (CFI) for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb=ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27bf8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbded0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba7dd3857aba8 Needed for #4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Annotate
start_task
withasm(".cfi_undefined rip");
, just like scylladb/seastar@1fa1323The text was updated successfully, but these errors were encountered: