Hello Maximilian Stein,
maybe the package maintainer can get some information out of that
kernel line, but maybe you can install a core dump collector
like e.g. systemd-coredump.
When the next crash happens you can examine the core by:
coredumpctl list
coredumpctl gdb <PID>
Even better if debug symbols could be installed before. [1]
Now I see one thing - you are running 1.0.35-1, is this
a local rebuilt package or the package from testing?
If the latter with some guessing the location *could* be there:
0x000000000000929d <send_meta+45>: movslq 0x98c(%rbx),%rdx
And that would point to following line:
src/meta.c:44 if(!c->outbuflen) {
But this is just based on the offsets and if the used package
was built by debian.
Kind regards,
Bernhard
[1] https://wiki.debian.org/HowToGetABacktrace
apt install devscripts dpkg-dev binutils gdb
wget http://ftp.de.debian.org/debian/pool/main/t/tinc/tinc_1.0.35-1_amd64.deb
wget
http://snapshot.debian.org/archive/debian-debug/20181008T214825Z/pool/main/t/tinc/tinc-dbgsym_1.0.35-1_amd64.deb
dpkg -i *.deb
mkdir tinc/orig -p
cd tinc/orig
dget http://deb.debian.org/debian/pool/main/t/tinc/tinc_1.0.35-1.dsc
cd ../..
# From #914360:
kernel: [52018.886642] tincd[691]: segfault at 98c ip 0000557ae018e29d sp
00007ffffc40f5b0 error 4 in tincd[557ae0189000+19000]
0x557ae0189000 - 0x557ae018e29d = 0x529D
benutzer@debian:~$ script -a out.txt -c "gdb -q --args /usr/sbin/tincd"
Reading symbols from /usr/sbin/tincd...Reading symbols from
/usr/lib/debug/.build-id/5b/0adb3822421ae6a87900b011c2b6af3e355be8.debug...done.
done.
(gdb) set width 0
(gdb) set pagination off
(gdb) directory /home/benutzer/tinc/orig/tinc-1.0.35/src
Source directories searched: /home/benutzer/tinc/orig/tinc-1.0.35/src:$cdir:$cwd
(gdb) info target
Symbols from "/usr/sbin/tincd".
Local exec file:
`/usr/sbin/tincd', file type elf64-x86-64.
Entry point: 0x5ac0
...
0x0000000000004c90 - 0x000000000001c922 is .text
...
(gdb) disassemble 0x0000000000004c90,0x000000000001c922
(gdb) q
# grep for 29d
benutzer@debian:~$ grep -i "29d " out.txt
0x000000000000929d <send_meta+45>: movslq 0x98c(%rbx),%rdx
<<<<< looks promising as it uses that 98c offset too
0x00000000000093d8 <send_meta+360>: jmpq 0x929d <send_meta+45>
0x000000000000d29d <load_all_subnets+397>: retq
0x000000000000e29d <setup_myself+3485>: lea 0xf1b2(%rip),%rsi
# 0x1d456
0x000000000001029d <do_outgoing_connection+1453>: je 0xff2a
<do_outgoing_connection+570>
0x000000000001329d <send_metakey+669>: mov %rax,0x90(%rbx)
0x000000000001629d <add_subnet_h+509>: mov %r14,%rdi
0x000000000001a29d <net2str+381>: push %rax
(gdb) disassemble /m send_meta
Dump of assembler code for function send_meta:
37 bool send_meta(connection_t *c, const char *buffer, int length) {
0x0000000000009270 <+0>: push %r12
0x0000000000009272 <+2>: mov %rsi,%r12
0x0000000000009275 <+5>: push %rbp
0x0000000000009276 <+6>: mov %edx,%ebp
0x0000000000009278 <+8>: push %rbx
0x0000000000009279 <+9>: mov %rdi,%rbx
0x000000000000927c <+12>: sub $0x10,%rsp
0x0000000000009280 <+16>: mov %fs:0x28,%rax
0x0000000000009289 <+25>: mov %rax,0x8(%rsp)
0x000000000000928e <+30>: xor %eax,%eax
38 int outlen;
39 int result;
40
41 ifdebug(META) logger(LOG_DEBUG, "Sending %d bytes of metadata
to %s (%s)", length,
0x0000000000009290 <+32>: cmpl $0x3,0x1ef51(%rip) # 0x281e8
<debug_level>
0x0000000000009297 <+39>: ja 0x93c0 <send_meta+336>
0x00000000000093c0 <+336>: mov 0x28(%rdi),%r8
0x00000000000093c4 <+340>: mov (%rdi),%rcx
0x00000000000093c7 <+343>: lea 0x14302(%rip),%rsi # 0x1d6d0
0x00000000000093ce <+350>: mov $0x7,%edi
0x00000000000093d3 <+355>: callq 0x8fe0 <logger>
0x00000000000093d8 <+360>: jmpq 0x929d <send_meta+45>
0x00000000000093dd <+365>: nopl (%rax)
42 c->name, c->hostname);
43
44 if(!c->outbuflen) {
<<<<<<<<<<<< would be here maybe with c == NULL ?
0x000000000000929d <+45>: movslq 0x98c(%rbx),%rdx
0x00000000000092a4 <+52>: test %edx,%edx
0x00000000000092a6 <+54>: jne 0x92b6 <send_meta+70>
45 c->last_flushed_time = now;
0x00000000000092a8 <+56>: mov 0x1ef81(%rip),%rax # 0x28230 <now>
0x00000000000092af <+63>: mov %rax,0x9a0(%rbx)
46 }
gdb -q --args /usr/sbin/tincd
set width 0
set pagination off
directory /home/benutzer/tinc/orig/tinc-1.0.35/src