On the assembly generated by create_linux_aio (in the mariadbd packages in Ubuntu-22.04, 10.6.7-2:
(gdb) disassemble tpool::create_linux_aio,+200 Dump of assembler code from 0x5640cf2e1fb0 to 0x5640cf2e2078: 0x00005640cf2e1fb0 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+0>: endbr64 0x00005640cf2e1fb4 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+4>: push %rbp 0x00005640cf2e1fb5 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+5>: mov %rsp,%rbp 0x00005640cf2e1fb8 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+8>: push %r14 0x00005640cf2e1fba <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+10>: mov %esi,%r14d 0x00005640cf2e1fbd <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+13>: push %r13 0x00005640cf2e1fbf <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+15>: mov %rdi,%r13 0x00005640cf2e1fc2 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+18>: mov $0x158,%edi 0x00005640cf2e1fc7 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+23>: push %r12 0x00005640cf2e1fc9 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+25>: sub $0x8,%rsp 0x00005640cf2e1fcd <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+29>: call 0x5640ceacb570 <_Znwm@plt> 0x00005640cf2e1fd2 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+34>: mov %r14d,%edx 0x00005640cf2e1fd5 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+37>: mov %r13,%rsi 0x00005640cf2e1fd8 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+40>: mov %rax,%rdi 0x00005640cf2e1fdb <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+43>: mov %rax,%r12 0x00005640cf2e1fde <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+46>: call 0x5640cf2e1dd0 <(anonymous namespace)::aio_uring::aio_uring(tpool::thread_pool*, int)> 0x00005640cf2e1fe3 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+51>: add $0x8,%rsp 0x00005640cf2e1fe7 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+55>: mov %r12,%rax 0x00005640cf2e1fea <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+58>: pop %r12 0x00005640cf2e1fec <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+60>: pop %r13 0x00005640cf2e1fee <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+62>: pop %r14 0x00005640cf2e1ff0 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+64>: pop %rbp 0x00005640cf2e1ff1 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+65>: ret 0x00005640cf2e1ff2 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+66>: endbr64 0x00005640cf2e1ff6 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+70>: mov %rax,%rdi 0x00005640cf2e1ff9 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+73>: mov %rdx,%rax 0x00005640cf2e1ffc <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+76>: jmp 0x5640ceb23308 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi-8121512> 0x00005640cf2e2001 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+81>: endbr64 0x00005640cf2e2005 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+85>: mov %rax,%r13 0x00005640cf2e2008 <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+88>: mov %rdx,%r14 0x00005640cf2e200b <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi+91>: jmp 0x5640ceb232fa <_ZN5tpool16create_linux_aioEPNS_11thread_poolEi.cold> --Type <RET> for more, q to quit, c to continue without paging--c 0x00005640cf2e2010 <_ZN5tpool19thread_pool_generic17create_native_aioEi+0>: endbr64 0x00005640cf2e2014 <_ZN5tpool19thread_pool_generic17create_native_aioEi+4>: push %rbp 0x00005640cf2e2015 <_ZN5tpool19thread_pool_generic17create_native_aioEi+5>: mov %rsp,%rbp 0x00005640cf2e2018 <_ZN5tpool19thread_pool_generic17create_native_aioEi+8>: push %r14 0x00005640cf2e201a <_ZN5tpool19thread_pool_generic17create_native_aioEi+10>: mov %esi,%r14d 0x00005640cf2e201d <_ZN5tpool19thread_pool_generic17create_native_aioEi+13>: push %r13 0x00005640cf2e201f <_ZN5tpool19thread_pool_generic17create_native_aioEi+15>: mov %rdi,%r13 0x00005640cf2e2022 <_ZN5tpool19thread_pool_generic17create_native_aioEi+18>: mov $0x158,%edi 0x00005640cf2e2027 <_ZN5tpool19thread_pool_generic17create_native_aioEi+23>: push %r12 0x00005640cf2e2029 <_ZN5tpool19thread_pool_generic17create_native_aioEi+25>: sub $0x8,%rsp 0x00005640cf2e202d <_ZN5tpool19thread_pool_generic17create_native_aioEi+29>: call 0x5640ceacb570 <_Znwm@plt> 0x00005640cf2e2032 <_ZN5tpool19thread_pool_generic17create_native_aioEi+34>: mov %r14d,%edx 0x00005640cf2e2035 <_ZN5tpool19thread_pool_generic17create_native_aioEi+37>: mov %r13,%rsi 0x00005640cf2e2038 <_ZN5tpool19thread_pool_generic17create_native_aioEi+40>: mov %rax,%rdi 0x00005640cf2e203b <_ZN5tpool19thread_pool_generic17create_native_aioEi+43>: mov %rax,%r12 0x00005640cf2e203e <_ZN5tpool19thread_pool_generic17create_native_aioEi+46>: call 0x5640cf2e1dd0 <(anonymous namespace)::aio_uring::aio_uring(tpool::thread_pool*, int)> 0x00005640cf2e2043 <_ZN5tpool19thread_pool_generic17create_native_aioEi+51>: add $0x8,%rsp 0x00005640cf2e2047 <_ZN5tpool19thread_pool_generic17create_native_aioEi+55>: mov %r12,%rax 0x00005640cf2e204a <_ZN5tpool19thread_pool_generic17create_native_aioEi+58>: pop %r12 0x00005640cf2e204c <_ZN5tpool19thread_pool_generic17create_native_aioEi+60>: pop %r13 0x00005640cf2e204e <_ZN5tpool19thread_pool_generic17create_native_aioEi+62>: pop %r14 0x00005640cf2e2050 <_ZN5tpool19thread_pool_generic17create_native_aioEi+64>: pop %rbp 0x00005640cf2e2051 <_ZN5tpool19thread_pool_generic17create_native_aioEi+65>: ret 0x00005640cf2e2052 <_ZN5tpool19thread_pool_generic17create_native_aioEi+66>: endbr64 0x00005640cf2e2056 <_ZN5tpool19thread_pool_generic17create_native_aioEi+70>: mov %rax,%rdi 0x00005640cf2e2059 <_ZN5tpool19thread_pool_generic17create_native_aioEi+73>: mov %rdx,%rax 0x00005640cf2e205c <_ZN5tpool19thread_pool_generic17create_native_aioEi+76>: jmp 0x5640ceb23334 <_ZN5tpool19thread_pool_generic17create_native_aioEi-8121564> 0x00005640cf2e2061 <_ZN5tpool19thread_pool_generic17create_native_aioEi+81>: endbr64 0x00005640cf2e2065 <_ZN5tpool19thread_pool_generic17create_native_aioEi+85>: mov %rax,%r13 0x00005640cf2e2068 <_ZN5tpool19thread_pool_generic17create_native_aioEi+88>: mov %rdx,%r14 0x00005640cf2e206b <_ZN5tpool19thread_pool_generic17create_native_aioEi+91>: jmp 0x5640ceb23326 <_ZN5tpool19thread_pool_generic17create_native_aioEi.cold>
My assembly knowledge isn't great, but after the call to (anonymous namespace)::aio_uring::aio_uring I'd expect some branching to identify the exception has occurred.
I tested a simplified version https://gist.github.com/grooverdan/f6d767a04ba5991ea2bf3de821e02e7b on https://godbolt.org/ and __cxa_begin_catch/__cxa_end_catch/_Unwind_Resume seem to be a standard part of exception handling.
On the assembly generated by create_linux_aio (in the mariadbd packages in Ubuntu-22.04, 10.6.7-2:
(gdb) disassemble tpool:: create_ linux_aio, +200 2e1fb0 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 0>: endbr64 2e1fb4 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 4>: push %rbp 2e1fb5 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 5>: mov %rsp,%rbp 2e1fb8 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 8>: push %r14 2e1fba <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 10>: mov %esi,%r14d 2e1fbd <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 13>: push %r13 2e1fbf <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 15>: mov %rdi,%r13 2e1fc2 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 18>: mov $0x158,%edi 2e1fc7 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 23>: push %r12 2e1fc9 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 25>: sub $0x8,%rsp 2e1fcd <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 29>: call 0x5640ceacb570 <_Znwm@plt> 2e1fd2 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 34>: mov %r14d,%edx 2e1fd5 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 37>: mov %r13,%rsi 2e1fd8 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 40>: mov %rax,%rdi 2e1fdb <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 43>: mov %rax,%r12 2e1fde <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 46>: call 0x5640cf2e1dd0 <(anonymous namespace) ::aio_uring: :aio_uring( tpool:: thread_ pool*, int)> 2e1fe3 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 51>: add $0x8,%rsp 2e1fe7 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 55>: mov %r12,%rax 2e1fea <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 58>: pop %r12 2e1fec <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 60>: pop %r13 2e1fee <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 62>: pop %r14 2e1ff0 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 64>: pop %rbp 2e1ff1 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 65>: ret 2e1ff2 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 66>: endbr64 2e1ff6 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 70>: mov %rax,%rdi 2e1ff9 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 73>: mov %rdx,%rax 2e1ffc <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 76>: jmp 0x5640ceb23308 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi- 8121512> 2e2001 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 81>: endbr64 2e2005 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 85>: mov %rax,%r13 2e2008 <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 88>: mov %rdx,%r14 2e200b <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi+ 91>: jmp 0x5640ceb232fa <_ZN5tpool16cre ate_linux_ aioEPNS_ 11thread_ poolEi. cold> 2e2010 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+0> : endbr64 2e2014 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+4> : push %rbp 2e2015 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+5> : mov %rsp,%rbp 2e2018 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+8> : push %r14 2e201a <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+10> : mov %esi,%r14d 2e201d <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+13> : push %r13 2e201f <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+15> : mov %rdi,%r13 2e2022 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+18> : mov $0x158,%edi 2e2027 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+23> : push %r12 2e2029 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+25> : sub $0x8,%rsp 2e202d <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+29> : call 0x5640ceacb570 <_Znwm@plt> 2e2032 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+34> : mov %r14d,%edx 2e2035 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+37> : mov %r13,%rsi 2e2038 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+40> : mov %rax,%rdi 2e203b <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+43> : mov %rax,%r12 2e203e <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+46> : call 0x5640cf2e1dd0 <(anonymous namespace) ::aio_uring: :aio_uring( tpool:: thread_ pool*, int)> 2e2043 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+51> : add $0x8,%rsp 2e2047 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+55> : mov %r12,%rax 2e204a <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+58> : pop %r12 2e204c <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+60> : pop %r13 2e204e <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+62> : pop %r14 2e2050 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+64> : pop %rbp 2e2051 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+65> : ret 2e2052 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+66> : endbr64 2e2056 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+70> : mov %rax,%rdi 2e2059 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+73> : mov %rdx,%rax 2e205c <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+76> : jmp 0x5640ceb23334 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi-8121564> 2e2061 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+81> : endbr64 2e2065 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+85> : mov %rax,%r13 2e2068 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+88> : mov %rdx,%r14 2e206b <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi+91> : jmp 0x5640ceb23326 <_ZN5tpool19thr ead_pool_ generic17create _native_ aioEi.cold>
Dump of assembler code from 0x5640cf2e1fb0 to 0x5640cf2e2078:
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
--Type <RET> for more, q to quit, c to continue without paging--c
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
0x00005640cf
My assembly knowledge isn't great, but after the call to (anonymous namespace) ::aio_uring: :aio_uring I'd expect some branching to identify the exception has occurred.
I tested a simplified version https:/ /gist.github. com/grooverdan/ f6d767a04ba5991 ea2bf3de821e02e 7b on https:/ /godbolt. org/ and __cxa_begin_ catch/_ _cxa_end_ catch/_ Unwind_ Resume seem to be a standard part of exception handling.