Sometimes when the Zero-K lobby is updated, it no longer starts up ("SIGSEGV while executing native code"). I'm using it with Mono on archlinux. In the past, I've just wiped my .spring folder and started over (copying over maps, of course), but this time I wanted to find a better solution.
I ran [*quote]strace -e trace=open,close,read,connect,accept mono Zero-K.exe[/quote] to see what files might be causing the exception, and it produced quite a lot of output (an excerpt is at the end). What is important is that it seemed to be looking in the .spring/cache directory when it crashed, so I deleted that subdirectory and the lobby once again starts.
[*quote]
open("/home/kmill/.spring/cache/SD/repositories.dat", O_RDONLY) = 12
read(12, "\0\1\0\0\0\377\377\377\377\1\0\0\0\0\0\0\0\f\2\0\0\0\nZero-K.al"..., 4096) = 4096
open("/usr/lib/mono/4.5/Zero-K.all.dll", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/Zero-K.all.dll", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/mono/4.5/Facades/Zero-K.all.dll", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/mono/4.5/Zero-K.all.exe", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/Zero-K.all.exe", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/mono/4.5/Facades/Zero-K.all.exe", O_RDONLY) = -1 ENOENT (No such file or directory)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x3c8} ---
Stacktrace:
at <unknown> <0xffffffff>
at (wrapper managed-to-native) System.Type.internal_from_name (string,bool,bool) <0xffffffff>
at System.Type.GetType (string,bool) <0x0002f>
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadTypeMetadata (System.IO.BinaryReader,bool,bool) <0x002b7>
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectInstance (System.IO.BinaryReader,bool,bool,long&,object&,System.Runtime.Serialization.SerializationInfo&) <0x0004b>
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (System.Runtime.Serialization.Formatters.Binary.BinaryElement,System.IO.BinaryReader,long&,object&,System.Runtime.Serialization.SerializationInfo&) <0x000df>
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (System.Runtime.Serialization.Formatters.Binary.BinaryElement,System.IO.BinaryReader,long&,object&,System.Runtime.Serialization.SerializationInfo&) <0x001e7>
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.Runtime.Serialization.Formatters.Binary.BinaryElement,System.IO.BinaryReader) <0x00087>
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (System.Runtime.Serialization.Formatters.Binary.BinaryElement,System.IO.BinaryReader,bool,object&,System.Runtime.Remoting.Messaging.Header[]&) <0x0004f>
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler) <0x00143>
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream) <0x00013>
at PlasmaDownloader.Packages.PackageDownloader.LoadRepositories () <0x0013b>
at PlasmaDownloader.Packages.PackageDownloader..ctor (PlasmaDownloader.PlasmaDownloader) <0x00393>
at PlasmaDownloader.PlasmaDownloader..ctor (PlasmaDownloader.IPlasmaDownloaderConfig,PlasmaShared.SpringScanner,PlasmaShared.SpringPaths) <0x00213>
at ZeroKLobby.Program.Main (string[]) <0x0117f>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>
Native stacktrace:
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 13
close(13) = 0
open("/usr/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 13
read(13, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0\0\0\0\0"..., 832) = 832
close(13) = 0
/usr/lib/libmonosgen-2.0.so.1(+0xd546a) [0x7f797a7ad46a]
/usr/lib/libmonosgen-2.0.so.1(+0x133aeb) [0x7f797a80baeb]
/usr/lib/libmonosgen-2.0.so.1(+0x3fde6) [0x7f797a717de6]
/usr/lib/libpthread.so.0(+0x10210) [0x7f797a4cc210]
/usr/lib/libmonosgen-2.0.so.1(+0x1f158a) [0x7f797a8c958a]
/usr/lib/libmonosgen-2.0.so.1(+0x1f111f) [0x7f797a8c911f]
/usr/lib/libmonosgen-2.0.so.1(+0x1f13c3) [0x7f797a8c93c3]
/usr/lib/libmonosgen-2.0.so.1(+0x16f3b4) [0x7f797a8473b4]
[0x40619920]
Debug info from gdb:
warning: process 20852 is already traced by process 20849
ptrace: Operation not permitted.
No threads.
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=20860, si_uid=1000, si_status=0, si_utime=3, si_stime=0} ---
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
[/quote]