I’ve build godot from master on 16.04 and packaged it up as a snap. I’m just prototyping this with a view to pushing a future build to the store for ease of install. However at the moment the editor crashes out once I create a brand new project. It’s highly likely this is related to the application confinement. I can run the binary outside confinement and it works fine.
Here’s the output when I run godot from the snap.
WARNING: initialize: Error setting locale modifiers
At: platform/x11/os_x11.cpp:149.
WARNING: initialize: XOpenIM failed
At: platform/x11/os_x11.cpp:184.
WARNING: initialize: XCreateIC couldn't create xic
At: platform/x11/os_x11.cpp:361.
OpenGL ES 3.0 Renderer: GeForce GTX 980M/PCIe/SSE2
GLES3: max ubo light: 409
GLES3: max ubo reflections: 455, ubo size: 144
ARVR: Registered interface: Native mobile
ERROR: create: Cannot create config directory!
At: editor/editor_settings.cpp:693.
ERROR: save: Cannot save EditorSettings config, no valid path
At: editor/editor_settings.cpp:861.
ERROR: save: Cannot save EditorSettings config, no valid path
At: editor/editor_settings.cpp:861.
ERROR: save: Cannot save EditorSettings config, no valid path
At: editor/editor_settings.cpp:861.
OPENING: /home/alan/snap/godot/x1/New Game Project (::home::alan::snap::godot::x1::New Game Project)
WARNING: initialize: Error setting locale modifiers
At: platform/x11/os_x11.cpp:149.
WARNING: initialize: XOpenIM failed
At: platform/x11/os_x11.cpp:184.
ERROR: save: Cannot save EditorSettings config, no valid path
At: editor/editor_settings.cpp:861.
alan@hal:~/Development/Snappy/godot$ WARNING: initialize: XCreateIC couldn't create xic
At: platform/x11/os_x11.cpp:361.
OpenGL ES 3.0 Renderer: GeForce GTX 980M/PCIe/SSE2
GLES3: max ubo light: 409
GLES3: max ubo reflections: 455, ubo size: 144
ARVR: Registered interface: Native mobile
ERROR: create: Cannot create config directory!
At: editor/editor_settings.cpp:693.
EditorSettings::_get - Warning, not found: text_editor/completion/put_callhint_tooltip_below_current_line
EditorSettings::_get - Warning, not found: text_editor/completion/callhint_tooltip_offset
ERROR: set_current_tab: Indexp_current=-1 out of size (get_tab_count()=0)
At: scene/gui/tab_container.cpp:403.
ERROR: set_current_tab: Indexp_current=-1 out of size (get_tab_count()=0)
At: scene/gui/tab_container.cpp:403.
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7f31fa95f4b0] ()
[2] /snap/godot/x1/bin/godot() [0xb27ec3] ()
[3] /snap/godot/x1/bin/godot() [0xb28df8] ()
[4] /snap/godot/x1/bin/godot() [0xb2a049] ()
[5] /snap/godot/x1/bin/godot() [0xb29678] ()
[6] /snap/godot/x1/bin/godot() [0xb2e54d] ()
[7] /snap/godot/x1/bin/godot() [0xb371f5] ()
[8] /snap/godot/x1/bin/godot() [0x1d66b61] ()
[9] /snap/godot/x1/bin/godot() [0x117d2c9] ()
[10] /snap/godot/x1/bin/godot() [0x117d7b8] ()
[11] /snap/godot/x1/bin/godot() [0x43a06c] ()
[12] /snap/godot/x1/bin/godot() [0x416032] ()
[13] /snap/godot/x1/bin/godot(main+0x7b) [0x40e82b] ()
[14] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7f31fa94a830] ()
[15] /snap/godot/x1/bin/godot() [0x40e6d9] ()
-- END OF BACKTRACE --
Some of the errors are also seen in upstream issue #12997 but I’m not convinced that’s the cause of the crash.
Steps to reproduce:
On a system which supports snaps, install the godot snap from the edge channel:-
sudo snap install godot
Launch godot from the command line, start a new clean project and load the editor.
Crash!
It does seem like it’s down to the fact that there’s one binary which launches as a project management UI then re-spawns as the game editor. I’m just guessing though. I don’t see any apparmor failures or in dmesg, but if I strace I see this:
wait4(25231, 0x7fff501f7730, 0, NULL) = -1 ECHILD (No child processes)
write(2, "[7] /snap/godot/2/bin/godot() [0"..., 44[7] /snap/godot/2/bin/godot() [0x40fcc0] ()
) = 44
pipe2([3, 4], O_CLOEXEC) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa985eb3bd0) = 25232
close(4) = 0
fcntl(3, F_SETFD, 0) = 0
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(3, "", 4096) = 0
close(3) = 0
wait4(25232, 0x7fff501f7730, 0, NULL) = -1 ECHILD (No child processes)
write(2, "[8] /snap/godot/2/bin/godot() [0"..., 44[8] /snap/godot/2/bin/godot() [0x4309f8] ()
) = 44
pipe2([3, 4], O_CLOEXEC) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa985eb3bd0) = 25233
close(4) = 0
fcntl(3, F_SETFD, 0) = 0
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(3, "", 4096) = 0
close(3) = 0
wait4(25233, 0x7fff501f7730, 0, NULL) = -1 ECHILD (No child processes)
write(2, "[9] /snap/godot/2/bin/godot() [0"..., 44[9] /snap/godot/2/bin/godot() [0x42f422] ()
) = 44
pipe2([3, 4], O_CLOEXEC) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa985eb3bd0) = 25234
close(4) = 0
fcntl(3, F_SETFD, 0) = 0
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(3, "", 4096) = 0
close(3) = 0
wait4(25234, 0x7fff501f7730, 0, NULL) = -1 ECHILD (No child processes)
write(2, "[10] /snap/godot/2/bin/godot(mai"..., 54[10] /snap/godot/2/bin/godot(main+0x56) [0x40e806] ()
) = 54
pipe2([3, 4], O_CLOEXEC) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa985eb3bd0) = 25235
close(4) = 0
fcntl(3, F_SETFD, 0) = 0
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(3, "", 4096) = 0
close(3) = 0
wait4(25235, 0x7fff501f7730, 0, NULL) = -1 ECHILD (No child processes)
write(2, "[11] /lib/x86_64-linux-gnu/libc."..., 81[11] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7fa981e86830] ()
) = 81
pipe2([3, 4], O_CLOEXEC) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa985eb3bd0) = 25236
close(4) = 0
fcntl(3, F_SETFD, 0) = 0
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(3, "", 4096) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=25236, si_uid=0, si_status=127, si_utime=0, si_stime=0} ---
wait4(-1, NULL, WNOHANG, NULL) = 25236
wait4(-1, NULL, WNOHANG, NULL) = -1 ECHILD (No child processes)
rt_sigreturn({mask=[SEGV]}) = 0
close(3) = 0
wait4(25236, 0x7fff501f7730, 0, NULL) = -1 ECHILD (No child processes)
write(2, "[12] /snap/godot/2/bin/godot() ["..., 45[12] /snap/godot/2/bin/godot() [0x40e6d9] ()
) = 45
write(2, "-- END OF BACKTRACE --\n", 23-- END OF BACKTRACE --
) = 23
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(25110, 25110, SIGABRT) = 0
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=25110, si_uid=0} ---
+++ killed by SIGABRT (core dumped) +++
Aborted (core dumped)
To prove it’s some kind of confinement issue, run /snap/godot/current/bin/godot
and it works fine.
Any ideas what I can do here?
Here’s the yaml http://bazaar.launchpad.net/~popey/+junk/godot-snap/view/head:/snap/snapcraft.yaml