Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Feb 2020 22:42:40 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Steve Roome <me@stephenroome.com>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: Panics while running Factorio (linux emulation)
Message-ID:  <20200206204240.GR4808@kib.kiev.ua>
In-Reply-To: <CAMrSzCUB_WwBfr-WTKwqkcsJ9P3t=Q2ATdEz-VVq9MwCs90Y=Q@mail.gmail.com>
References:  <CAMrSzCUB_WwBfr-WTKwqkcsJ9P3t=Q2ATdEz-VVq9MwCs90Y=Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Feb 06, 2020 at 03:46:56PM +0000, Steve Roome wrote:
> I keep getting panics (short backtraces later on) while running Factorio
> for Linux.
> 
> It is using a slightly newer linux glibc than the one in the linux-c7
> ports, but still, I'm running as a user, and it's causing panics. This is a
> 64bit linux program that other than these packages on top of a stock
> freebsd/x desktop:
> 
> linux-c7-alsa-lib-1.1.8            =
> linux-c7-atk-2.28.1                =
> linux-c7-cairo-1.15.12_1           =
> linux-c7-dbus-libs-1.10.24_1       =
> linux-c7-devtools-7.7.1908_4       =
> linux-c7-dri-18.3.4                =
> linux-c7-elfutils-libelf-0.176     =
> linux-c7-elfutils-libs-0.176       =
> linux-c7-expat-2.1.0_2             =
> linux-c7-flac-libs-1.3.0_2         =
> linux-c7-fontconfig-2.13.0         =
> linux-c7-freetype-2.8_1            =
> linux-c7-fribidi-1.0.2_1           =
> linux-c7-gdk-pixbuf2-2.36.12       =
> linux-c7-glx-utils-8.3.0_1         =
> linux-c7-graphite2-1.3.10          =
> linux-c7-gtk2-2.24.31              =
> linux-c7-harfbuzz-1.7.5            =
> linux-c7-jasper-libs-1.900.1_5     =
> linux-c7-jbigkit-libs-2.0_2        =
> linux-c7-jpeg-1.2.90_4             =
> linux-c7-libasyncns-0.8_1          =
> linux-c7-libdrm-2.4.91             <
> linux-c7-libgcrypt-1.5.3_4         =
> linux-c7-libgfortran-4.8.5_5       =
> linux-c7-libglvnd-1.0.1            =
> linux-c7-libgpg-error-1.12_2       =
> linux-c7-libogg-1.3.0_1            =
> linux-c7-libpciaccess-0.14         =
> linux-c7-libpng-1.5.13_2           =
> linux-c7-libsndfile-1.0.25_3       =
> linux-c7-libthai-0.1.14_1          =
> linux-c7-libtiff-4.0.3_4           =
> linux-c7-libvorbis-1.3.3_2         =
> linux-c7-lz4-1.7.5_1               =
> linux-c7-pango-1.42.4_1            =
> linux-c7-pixman-0.34.0             =
> linux-c7-pulseaudio-libs-10.0_2    =
> linux-c7-systemd-libs-219_3        =
> linux-c7-tcp_wrappers-libs-7.6_2   =
> linux-c7-wayland-1.15.0            =
> linux-c7-xorg-libs-7.7_8           =
> linux-eagle5-5.12.0_6              =
> linux-nvidia-libs-440.31           =
> linux_base-c7-7.7.1908_1           =
> 
> It also needed this in it's own space:
> 
> gsm-1.0.13-11.el7.x86_64.rpm
> 
> and a bit of patchelf magic and pointing at this glibc2.18
> 
>  libc6_2.18-0ubuntu4_amd64.deb
> 
> 
> 
> This happens rather a lot and it'd be nice to stop it, imho, even a badly
> behaved user such as myself using a linux app shouldn't be able to cause a
> panic
> 
> Ta .. Steve (backtraces below)
> 
> ....
> 
> Feb  6 01:45:55 tv kernel: cpuid = 3
> Feb  6 01:45:55 tv kernel: time = 1580953529
> Feb  6 01:45:55 tv kernel: KDB: stack backtrace:
> Feb  6 01:45:55 tv kernel: #0 0xffffffff80c1d2b7 at kdb_backtrace+0x67
> Feb  6 01:45:55 tv kernel: #1 0xffffffff80bd05ed at vpanic+0x19d
> Feb  6 01:45:55 tv kernel: #2 0xffffffff80bd0443 at panic+0x43
> Feb  6 01:45:55 tv kernel: #3 0xffffffff810a7dcc at trap_fatal+0x39c
> Feb  6 01:45:55 tv kernel: #4 0xffffffff810a7e19 at trap_pfault+0x49
> Feb  6 01:45:55 tv kernel: #5 0xffffffff810a740f at trap+0x29f
> Feb  6 01:45:55 tv kernel: #6 0xffffffff81081a2c at calltrap+0x8
> Feb  6 01:45:55 tv kernel: #7 0xffffffff80bb0389 at __mtx_unlock_sleep+0xb9
> Feb  6 01:45:55 tv kernel: #8 0xffffffff8301fd45 at futex_put+0x135
> Feb  6 01:45:55 tv kernel: #9 0xffffffff8301e869 at linux_sys_futex+0xbb9
> Feb  6 01:45:55 tv kernel: #10 0xffffffff810a8984 at amd64_syscall+0x364
> Feb  6 01:45:55 tv kernel: ---<<BOOT>>---
> Feb  6 01:45:55 tv kernel: Copyright (c) 1992-2019 The FreeBSD Project.
> Feb  6 01:45:55 tv kernel: Copyright (c) 1979, 1980, 1983, 1986, 1988,
> 1989, 1991, 1992, 1993, 1994
> Feb  6 01:45:55 tv kernel:      The Regents of the University of
> California. All rights reserved.
> --
> Feb  6 13:54:13 tv kernel: panic: page fault
> Feb  6 13:54:13 tv kernel: cpuid = 0
> Feb  6 13:54:13 tv kernel: time = 1580997227
> Feb  6 13:54:13 tv kernel: KDB: stack backtrace:
> Feb  6 13:54:13 tv kernel: #0 0xffffffff80c1d2b7 at kdb_backtrace+0x67
> Feb  6 13:54:13 tv kernel: #1 0xffffffff80bd05ed at vpanic+0x19d
> Feb  6 13:54:13 tv kernel: #2 0xffffffff80bd0443 at panic+0x43
> Feb  6 13:54:13 tv kernel: #3 0xffffffff810a7dcc at trap_fatal+0x39c
> Feb  6 13:54:13 tv kernel: #4 0xffffffff810a7e19 at trap_pfault+0x49
> Feb  6 13:54:13 tv kernel: #5 0xffffffff810a740f at trap+0x29f
> Feb  6 13:54:13 tv kernel: #6 0xffffffff81081a2c at calltrap+0x8
> Feb  6 13:54:13 tv kernel: #7 0xffffffff80bb0389 at __mtx_unlock_sleep+0xb9
> Feb  6 13:54:13 tv kernel: #8 0xffffffff8301fd45 at futex_put+0x135
> Feb  6 13:54:13 tv kernel: #9 0xffffffff8301e869 at linux_sys_futex+0xbb9
> Feb  6 13:54:13 tv kernel: #10 0xffffffff810a8984 at amd64_syscall+0x364
> Feb  6 13:54:13 tv kernel: ---<<BOOT>>---
> Feb  6 13:54:13 tv kernel: Copyright (c) 1992-2019 The FreeBSD Project.
> Feb  6 13:54:13 tv kernel: Copyright (c) 1979, 1980, 1983, 1986, 1988,
> 1989, 1991, 1992, 1993, 1994
> Feb  6 13:54:13 tv kernel:      The Regents of the University of
> California. All rights reserved.
> --
> Feb  6 15:12:10 tv kernel: panic: page fault
> Feb  6 15:12:10 tv kernel: cpuid = 3
> Feb  6 15:12:10 tv kernel: time = 1581001904
> Feb  6 15:12:10 tv kernel: KDB: stack backtrace:
> Feb  6 15:12:10 tv kernel: #0 0xffffffff80c1d2b7 at kdb_backtrace+0x67
> Feb  6 15:12:10 tv kernel: #1 0xffffffff80bd05ed at vpanic+0x19d
> Feb  6 15:12:10 tv kernel: #2 0xffffffff80bd0443 at panic+0x43
> Feb  6 15:12:10 tv kernel: #3 0xffffffff810a7dcc at trap_fatal+0x39c
> Feb  6 15:12:10 tv kernel: #4 0xffffffff810a7e19 at trap_pfault+0x49
> Feb  6 15:12:10 tv kernel: #5 0xffffffff810a740f at trap+0x29f
> Feb  6 15:12:10 tv kernel: #6 0xffffffff81081a2c at calltrap+0x8
> Feb  6 15:12:10 tv kernel: #7 0xffffffff80bb0389 at __mtx_unlock_sleep+0xb9
> Feb  6 15:12:10 tv kernel: #8 0xffffffff8301fd45 at futex_put+0x135
> Feb  6 15:12:10 tv kernel: #9 0xffffffff8301e869 at linux_sys_futex+0xbb9
> Feb  6 15:12:10 tv kernel: #10 0xffffffff810a8984 at amd64_syscall+0x364
> Feb  6 15:12:10 tv kernel: ---<<BOOT>>---
> Feb  6 15:12:10 tv kernel: Copyright (c) 1992-2019 The FreeBSD Project.
> Feb  6 15:12:10 tv kernel: Copyright (c) 1979, 1980, 1983, 1986, 1988,
> 1989, 1991, 1992, 1993, 1994
> Feb  6 15:12:10 tv kernel:      The Regents of the University of
> California. All rights reserved.
> 

Would be useful to show the source line for futex_put+0x135.
What is the system version ?

Try this.
diff --git a/sys/compat/linux/linux_futex.c b/sys/compat/linux/linux_futex.c
index 4f42081156b..35deca0bfdc 100644
--- a/sys/compat/linux/linux_futex.c
+++ b/sys/compat/linux/linux_futex.c
@@ -329,9 +329,9 @@ futex_put(struct futex *f, struct waiting_proc *wp)
 	    f->f_key.shared);
 	LINUX_CTR3(sys_futex, "futex_put uaddr %p ref %d shared %d",
 	    f->f_uaddr, f->f_refcount, f->f_key.shared);
-	FUTEXES_UNLOCK;
 	if (FUTEX_LOCKED(f))
 		futex_unlock(f);
+	FUTEXES_UNLOCK;
 
 	LIN_SDT_PROBE0(futex, futex_put, return);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200206204240.GR4808>