-
Notifications
You must be signed in to change notification settings - Fork 16.1k
Open
Description
I have a class like:
class Query_arena
{
public:
/*
List of items created in the parser for this query. Every item puts
itself to the list on creation (see Item::Item() for details))
*/
void *free_list;
void *mem_root;
enum enum_state
{
STMT_INITIALIZED= 0, STMT_INITIALIZED_FOR_SP= 1, STMT_PREPARED= 2,
STMT_CONVENTIONAL_EXECUTION= 3, STMT_EXECUTED= 4,
STMT_SP_QUERY_ARGUMENTS= 5, STMT_ERROR= -1
};
enum_state state;
void set_query_arena(Query_arena *set);
};
void Query_arena::set_query_arena(Query_arena *set)
{
mem_root= set->mem_root;
free_list= set->free_list;
state= set->state;
}Code generated by:
clang --version
Debian clang version 21.1.8 (++20251221033036+2078da43e25a-1~exp1~20251221153213.50)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-21/bin
Without -stdlib=libc++:
$ /usr/bin/clang++ -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DHAVE_POOL_OF_THREADS -DMYSQL_SERVER -D_FILE_OFFSET_BITS=64 -I/source/wsrep-lib/include -I/source/wsrep-lib/wsrep-API/v26 -I/build/include -I/source/include/providers -I/source/include -I/source/sql -I/source/zlib -I/build/zlib -I/build/sql -I/source/tpool -O2 sql/CMakeFiles/sql.dir/sql_class.cc.o -MF sql/CMakeFiles/sql.dir/sql_class.cc.o.d -o sql/CMakeFiles/sql.dir/sql_class.cc.o -c /source/sql/sql_class.cc
clang++: warning: sql/CMakeFiles/sql.dir/sql_class.cc.o: 'linker' input unused [-Wunused-command-line-argument]
clang++: warning: argument unused during compilation: '-MF sql/CMakeFiles/sql.dir/sql_class.cc.o.d' [-Wunused-command-line-argument]
buildbot@dedc0770fda6:/build$
buildbot@dedc0770fda6:/build$ objdump -d sql/CMakeFiles/sql.dir/sql_class.cc.o | grep -A 100 _ZN3THD25set_n_backup_active_arenaEP11Query_arenaS1_ | more
000000000000b1b0 <_ZN3THD25set_n_backup_active_arenaEP11Query_arenaS1_>:
b1b0: 41 57 push %r15
b1b2: 41 56 push %r14
b1b4: 53 push %rbx
b1b5: 80 7a 18 00 cmpb $0x0,0x18(%rdx)
b1b9: 75 26 jne b1e1 <_ZN3THD25set_n_backup_active_arenaEP11Query_arenaS1_+0x31>
b1bb: 0f 10 47 20 movups 0x20(%rdi),%xmm0
b1bf: 0f 11 42 08 movups %xmm0,0x8(%rdx)
b1c3: 8b 47 34 mov 0x34(%rdi),%eax
b1c6: 89 42 1c mov %eax,0x1c(%rdx)
b1c9: 0f 10 46 08 movups 0x8(%rsi),%xmm0
b1cd: 0f 11 47 20 movups %xmm0,0x20(%rdi)
With -stdlib=libc++:
/usr/bin/clang++ -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DHAVE_POOL_OF_THREADS -DMYSQL_SERVER -D_FILE_OFFSET_BITS=64 -I/source/wsrep-lib/include -I/source/wsrep-lib/wsrep-API/v26 -I/build/include -I/source/include/providers -I/source/include -I/source/sql -I/source/zlib -I/build/zlib -I/build/sql -I/source/tpool -stdlib=libc++ -O2 sql/CMakeFiles/sql.dir/sql_class.cc.o -MF sql/CMakeFiles/sql.dir/sql_class.cc.o.d -o sql/CMakeFiles/sql.dir/sql_class.cc.o -c /source/sql/sql_class.cc
000000000000b070 <_ZN3THD25set_n_backup_active_arenaEP11Query_arenaS1_>:
b070: 41 57 push %r15
b072: 41 56 push %r14
b074: 53 push %rbx
b075: 80 7a 18 00 cmpb $0x0,0x18(%rdx)
b079: 75 26 jne b0a1 <_ZN3THD25set_n_backup_active_arenaEP11Query_arenaS1_+0x31>
b07b: 0f 28 47 20 movaps 0x20(%rdi),%xmm0
b07f: 0f 11 42 08 movups %xmm0,0x8(%rdx)
b083: 8b 47 34 mov 0x34(%rdi),%eax
b086: 89 42 1c mov %eax,0x1c(%rdx)
b089: 0f 10 46 08 movups 0x8(%rsi),%xmm0
b08d: 0f 29 47 20 movaps %xmm0,0x20(%rdi)
The class allocation is a fairly normal.
This resulted in a SEGV - code below with sanitizer=memory, however functionally identical :
Thread 1 received signal SIGSEGV, Segmentation fault.
0x00005602d34313dd in Query_arena::set_query_arena (this=0x7ffc957f4360, set=0x72b0000ee030) at /source/sql/sql_class.cc:4281
4281 free_list= set->free_list;
(rr) disassemble
Dump of assembler code for function _ZN3THD25set_n_backup_active_arenaEP11Query_arenaS1_:
0x00005602d34313b0 <+0>: push %rbp
0x00005602d34313b1 <+1>: mov %rsp,%rbp
0x00005602d34313b4 <+4>: push %r15
0x00005602d34313b6 <+6>: push %r14
0x00005602d34313b8 <+8>: push %r13
0x00005602d34313ba <+10>: push %r12
0x00005602d34313bc <+12>: push %rbx
0x00005602d34313bd <+13>: sub $0x38,%rsp
0x00005602d34313c1 <+17>: movabs $0x500000000000,%r14
0x00005602d34313cb <+27>: movabs $0x100000000000,%r8
0x00005602d34313d5 <+37>: lea 0x20(%rdi),%r9
0x00005602d34313d9 <+41>: lea 0x8(%rdx),%r13
=> 0x00005602d34313dd <+45>: movaps 0x20(%rdi),%xmm2
Reactions are currently unavailable