On Tue, 07 May 2019 02:25:13 -0400 John Covici <cov...@ccs.covici.com> wrote:
> On Tue, 07 May 2019 01:58:25 -0400, > Andreas Fink wrote: > > > > On Thu, 18 Apr 2019 10:14:13 -0400 > > John Covici <cov...@ccs.covici.com> wrote: > > > > > On Thu, 18 Apr 2019 03:20:25 -0400, > > > Neil Bothwick wrote: > > > > > > > > [1 <text/plain; US-ASCII (quoted-printable)>] > > > > On Wed, 17 Apr 2019 21:41:41 -0400, John Covici wrote: > > > > > > > > > Apr 17 18:39:55 ccs.covici.com systemd-coredump[5334]: Process > > > > > 5332 (umount.davfs) of user 0 dumped core. > > > > > Apr 17 18:39:55 ccs.covici.com systemd[1]: > > > > > systemd-coredump@0-5333-0.service: Succeeded. > > > > > > > > > > I can't find that coredump, not sure if the process is allowed to > > > > > do it. > > > > > > > > From the systemd-coredump man page: > > > > > > > > By default, systemd-coredump will log the core dump including a > > > > backtrace if possible to the journal and store the core dump itself > > > > in an external file in /var/lib/systemd/coredump. > > > > > > > > You can change this in /etc/systemd/coredump.conf > > > > > > Thanks, I found it, but the backtrace has no symbols, even though I > > > have features set so that everything is compiled with symbols like > > > this: > > > FEATURES="${FEATURES} -stricter -distcc -ccache splitdebug buildpkg" > > > I wonder what is happening here? > > > > > > Strange thing si I have seen nothing on bgo for this problem. > > > > > > > I have the same problem on one of my machines. It segfaults somewhere > > in strcmp with avx2 according to a backtrace. > > Will try rebuilding my system libraries, since I changed lately from > > "march=native" to "march=x86-64 mtune=generic". I thought I rebuilt > > everything but there might be something missing for me. > > Anyway, for me as a workaround this works: fusermount -u MOUNTPOINT > > OK, I will try that and see if it works. > > Thanks. > I was debugging the issue today, and it's a bug in davfs2 as it seems... Line 151-153 in src/umount_davfs.c reads the following: char *pid = NULL; FILE *file = fopen(pidfile, "r"); if (!file || fscanf(file, "%a[0-9]", &pid) != 1 || !pid) { This is something I don't even understand what it is supposed to do, because there is so much wrong with it... %a would read a floating point (we all know, PID's are floating points...) The [0-9] is completely useless there.. The result is being saved in a char*... You could write it like this: char pid[32]; FILE *file = fopen(pidfile, "r"); if (!file || fscanf(file, "%s", pid) != 1) { This would fix the segmentation fault. And now the funny part: I wanted to report a bug, so I went to the website and wanted to see in the source code repository when this bug was introduced. However in the source code repository there is a correct implementation (similar to mine, actually more safe than mine) BUT any released version I tested from 1.4.7 until 1.5.5 all have this wrong implementation 1.4.7 was released in 2012, and the file src/umount_davfs.c wasn't changed since 2 years according to the repository browser. How the releases are correlating with the source code browser is at the moment beyound my understanding of this project. Anyone in contact with the development team of davfs2, who could shed some light on the situation? Cheers Andreas