Hi
I'm encountering an intermittent segmentation fault when starting the game and resizing the window.
There's nothing of use in the gdb backtraces, sadly
To recreate:
1. Run the game.
2. Resize the game window.
3. Load a save. Notice that the save is running very slowly (possibly related to this : https://forums.factorio.com/forum/vie ... f=7&t=3619 ?) Note however, this problem can occur with or without a second monitor enabled.
4. Resize the game window again. Note that the save is now running at normal speed.
5. Resize again. Crash.
Why all the resizing? I like to play the game in a maximized window, so I normally maximize it while the resources are loading at startup. Often this works fine. Other times, the game runs slow. Unmaximizing has the interesting effect of making the game run normal speed again. However, when I re-maximize the window, I will usually encounter this segmentation fault.
Note: this problem is intermittent. There seem to be times when it works fine and I can resize the game window freely, so it may be that something is interfering with the GL state somehow.
System info: NVIDIA proprietary 340.24, Linux 3.14-2-amd64 (debian sid latest). There is a second monitor connected, but not always turned on in configuration. Factorio seems to prefer to start on it when it IS turned on, as it has a lower X value than the main monitor (as do many other apps *sigh*).
[Linux x64] Segmentation fault when resizing game window
Re: [Linux x64] Segmentation fault when resizing game window
Some gdb backtraces for your fun and amusement.
0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
(gdb) bt
#0 0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#1 0x00007ffff3d00f17 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#2 0x00007ffff3d017b0 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#3 0x00007ffff3ce706e in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#4 0x00007ffff3ce773c in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#5 0x00007ffff6cd1c9f in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#6 0x00007ffff6cab3e8 in glXSwapBuffers () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#7 0x000000000085c03b in ?? ()
#8 0x000000000085ec5c in ?? ()
#9 0x0000000000887532 in ?? ()
#10 0x00007ffff5e76b45 in __libc_start_main (main=0x884800, argc=1, argv=0x7fffffffe378,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe368)
at libc-start.c:287
#11 0x000000000040f219 in ?? ()
0x00007ffff6c81842 in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
(gdb) bt
#0 0x00007ffff6c81842 in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#1 0x00007ffff6c8197f in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#2 0x00007ffff3924477 in ?? ()
from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#3 0x00007ffff392466d in ?? ()
from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#4 0x00007ffff39248ce in ?? ()
from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#5 0x00000000009842a4 in ?? ()
#6 0x00000000009846ac in ?? ()
#7 0x000000000098258b in ?? ()
#8 0x0000000000988f4c in ?? ()
#9 0x000000000048f41d in ?? ()
#10 0x0000000000499e93 in ?? ()
#11 0x00000000007b0876 in ?? ()
#12 0x000000000085d7dc in ?? ()
#13 0x000000000085ec5c in ?? ()
#14 0x0000000000887532 in ?? ()
#15 0x00007ffff5e76b45 in __libc_start_main (main=0x884800, argc=1,
argv=0x7fffffffe378, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffe368) at libc-start.c:287
#16 0x000000000040f219 in ?? ()
0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
(gdb) bt
#0 0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#1 0x00007ffff3d00f17 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#2 0x00007ffff3d017b0 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#3 0x00007ffff3ce706e in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#4 0x00007ffff3ce773c in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#5 0x00007ffff6cd1c9f in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#6 0x00007ffff6cab3e8 in glXSwapBuffers () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#7 0x000000000085c03b in ?? ()
#8 0x000000000085ec5c in ?? ()
#9 0x0000000000887532 in ?? ()
#10 0x00007ffff5e76b45 in __libc_start_main (main=0x884800, argc=1, argv=0x7fffffffe378,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe368)
at libc-start.c:287
#11 0x000000000040f219 in ?? ()
0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
(gdb) bt
#0 0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#1 0x00007ffff3d00f17 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#2 0x00007ffff3d017b0 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#3 0x00007ffff3ce706e in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#4 0x00007ffff3ce773c in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#5 0x00007ffff6cd1c9f in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#6 0x00007ffff6cab3e8 in glXSwapBuffers () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#7 0x000000000085c03b in ?? ()
#8 0x000000000085ec5c in ?? ()
#9 0x0000000000887532 in ?? ()
#10 0x00007ffff5e76b45 in __libc_start_main (main=0x884800, argc=1, argv=0x7fffffffe378,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe368)
at libc-start.c:287
#11 0x000000000040f219 in ?? ()
0x00007ffff6c81842 in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
(gdb) bt
#0 0x00007ffff6c81842 in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#1 0x00007ffff6c8197f in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#2 0x00007ffff3924477 in ?? ()
from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#3 0x00007ffff392466d in ?? ()
from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#4 0x00007ffff39248ce in ?? ()
from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#5 0x00000000009842a4 in ?? ()
#6 0x00000000009846ac in ?? ()
#7 0x000000000098258b in ?? ()
#8 0x0000000000988f4c in ?? ()
#9 0x000000000048f41d in ?? ()
#10 0x0000000000499e93 in ?? ()
#11 0x00000000007b0876 in ?? ()
#12 0x000000000085d7dc in ?? ()
#13 0x000000000085ec5c in ?? ()
#14 0x0000000000887532 in ?? ()
#15 0x00007ffff5e76b45 in __libc_start_main (main=0x884800, argc=1,
argv=0x7fffffffe378, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffe368) at libc-start.c:287
#16 0x000000000040f219 in ?? ()
0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
(gdb) bt
#0 0x00007ffff3c2bc9b in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#1 0x00007ffff3d00f17 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#2 0x00007ffff3d017b0 in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#3 0x00007ffff3ce706e in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#4 0x00007ffff3ce773c in ?? () from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.24
#5 0x00007ffff6cd1c9f in ?? () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#6 0x00007ffff6cab3e8 in glXSwapBuffers () from /usr/lib/x86_64-linux-gnu/libGL.so.1
#7 0x000000000085c03b in ?? ()
#8 0x000000000085ec5c in ?? ()
#9 0x0000000000887532 in ?? ()
#10 0x00007ffff5e76b45 in __libc_start_main (main=0x884800, argc=1, argv=0x7fffffffe378,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe368)
at libc-start.c:287
#11 0x000000000040f219 in ?? ()
Re: [Linux x64] Segmentation fault when resizing game window
I did this:
* Start factorio (windowed mode, comes up at 1280x720)
* While the loading screen is still active, maximize the factorio window (to some odd resolution close to 1920x1080, I have the unity bar on the left and the system unity bar on the top of the screen)
* Observe that the loading screen fails to adapt to the new window size, i.e. the factorio logo is too small and in the bottom left corner
* Observe that once the main menu is loaded, everything adapts to the new window size correctly
* Load a save game and hit F5 to show FPS
* Observe it's running at ~50FPS
* Unmaximize the window (so it's back to 1280x720), observe it's still at 50FPS
* Repeatedly maximize and unmaximize: No changes to FPS, no crash
Using AMD Radeon 6870 + the open source drivers as of Ubuntu 14.04. Maybe it's a bug with nvidia drivers? Or mesa r600g is more robust with some undefined behaviour that factorio runs into, in which case it's a factorio / allegro bug.
* Start factorio (windowed mode, comes up at 1280x720)
* While the loading screen is still active, maximize the factorio window (to some odd resolution close to 1920x1080, I have the unity bar on the left and the system unity bar on the top of the screen)
* Observe that the loading screen fails to adapt to the new window size, i.e. the factorio logo is too small and in the bottom left corner
* Observe that once the main menu is loaded, everything adapts to the new window size correctly
* Load a save game and hit F5 to show FPS
* Observe it's running at ~50FPS
* Unmaximize the window (so it's back to 1280x720), observe it's still at 50FPS
* Repeatedly maximize and unmaximize: No changes to FPS, no crash
Using AMD Radeon 6870 + the open source drivers as of Ubuntu 14.04. Maybe it's a bug with nvidia drivers? Or mesa r600g is more robust with some undefined behaviour that factorio runs into, in which case it's a factorio / allegro bug.
Re: [Linux x64] Segmentation fault when resizing game window
Could you please try it in the 0.10.9 version?
If it happens could you upload the core dump? Also about the monitor index, in version 0.10.10 there will be config option to enable different than 0index monitor to be used by default.
If it happens could you upload the core dump? Also about the monitor index, in version 0.10.10 there will be config option to enable different than 0index monitor to be used by default.
-
- Long Handed Inserter
- Posts: 92
- Joined: Mon Aug 11, 2014 5:22 am
- Contact:
Re: [Linux x64] Segmentation fault when resizing game window
This is almost certainly a driver bug. Check your Xorg.0.log for WW or EE messages prefixed "NVIDIA"; it's likely some driver internal state corruption that gets progressively worse with each resize. Does this still happen with a 337.xx driver version? How about nouveau? Are you using a compositing WM/DE? Is multimonitor managed by the driver (TwinView) or the X server? Is the other monitor on a different videocard? Is this a laptop with hybrid graphics?