-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
nodetool cleanup segfaults #2537
Comments
avikivity
pushed a commit
that referenced
this issue
Jul 3, 2017
when do_for_each is in its last iteration and with_semaphore defers because there's an ongoing cleanup, sstable object will be used after freed because it was taken by ref and the container it lives in was destroyed prematurely. Let's fix it with a do_with, also making code nicer. Fixes #2537. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Message-Id: <20170630035324.19881-1-raphaelsc@scylladb.com> (cherry picked from commit b9d0645)
avikivity
pushed a commit
that referenced
this issue
Jul 3, 2017
when do_for_each is in its last iteration and with_semaphore defers because there's an ongoing cleanup, sstable object will be used after freed because it was taken by ref and the container it lives in was destroyed prematurely. Let's fix it with a do_with, also making code nicer. Fixes #2537. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Message-Id: <20170630035324.19881-1-raphaelsc@scylladb.com> (cherry picked from commit b9d0645)
avikivity
added a commit
to avikivity/scylladb
that referenced
this issue
Mar 20, 2023
…ojnowski This patch introduces link-time optimization (LTO) to the build. The performance gains from LTO alone are modest (~7%), but it's vital ingredient of effective profile-guided optimization, which will be introduced later. In general, use of LTO is quite simple and transparent to build systems. It is sufficient to add the -flto flag to compile and link steps, and use a LTO-aware linker. At compile time, -flto will cause the compiler to emit .o files containing not machine code, but compiler's internal representation (IR). At link time, those pieces of IR will be compiled together, allowing cross-object optimization. Therefore compiling Scylla with LTO can be as simple as running configure.py with --cflags=-flto. Unfortunately this will also cause all other executables (like tests) to be linked with LTO. In other words, the entire project will be largely recompiled from scratch for every test, and that's impractical. GCC has the ability to emit "fat" objects containing both LTO-ready IR and machine code, which can be used for both LTO and non-LTO linking, which solves the above problem. Unfortunately LLVM doesn't have such option and we have to implement an alternative ourselves, which complicates the situation. This patch settles for a dual compilation of all objects: from source to IR files and from IR files to ELF objects. The rule for scylla then uses the IR files for linking and rules for tests use the ELF files. Due to it's high compile time cost, the optimization can be toggled with a configure.py option. As of this patch, it's disabled by default. Refs scylladb#2537 Refs scylladb#2538 Refs scylladb#10808 Closes scylladb#2597 * github.com:scylladb/scylla-enterprise: configure.py: enable LTO in release builds by default configure.py: introduce link-time optimization configure.py: add a `default` to `add_tristate`. configure.py: unify build rules for cxxbridge .cc files and regular .cc files
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Installation details
Scylla version (or git commit hash): 1.7.0
Calling nodetool cleanup can segfault a node. Here's the trace that is generated:
That translates to:
I have a backtrace in case someone wants to look at it, but will not publish as it contains user data.
The text was updated successfully, but these errors were encountered: