Monday 20 February 2012

SopCast Player "segfault" Ubuntu x64

So, "sopcast-player" does not start, and you do:

strace sopcast-player

in terminal, and you get:

execve("/usr/bin/sopcast-player", ["sopcast-player"], [/* 42 vars */]) = 0
brk(0) = 0x74f000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7377495000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=126050, ...}) = 0
mmap(NULL, 126050, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7377476000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \24\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1677624, ...}) = 0
mmap(NULL, 3793768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7376ed8000
mprotect(0x7f737706d000, 2093056, PROT_NONE) = 0
mmap(0x7f737726c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x194000) = 0x7f737726c000
mmap(0x7f7377271000, 21352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7377271000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7377475000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7377473000
arch_prctl(ARCH_SET_FS, 0x7f7377473720) = 0
mprotect(0x7f737726c000, 16384, PROT_READ) = 0
mprotect(0x619000, 4096, PROT_READ) = 0
mprotect(0x7f7377497000, 4096, PROT_READ) = 0
munmap(0x7f7377476000, 126050) = 0
getpid() = 8514
rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7f7376f0e420}, {SIG_DFL, [], 0}, 8) = 0
geteuid() = 1000
brk(0) = 0x74f000
brk(0x770000) = 0x770000
getppid() = 8513
stat("/home/paul", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/bin/sopcast-player", O_RDONLY) = 3
fcntl(3, F_DUPFD, 10) = 10
close(3) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0x40f050, ~[RTMIN RT_1], SA_RESTORER, 0x7f7376f0e420}, NULL, 8) = 0
rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7f7376f0e420}, NULL, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7f7376f0e420}, NULL, 8) = 0
read(10, "#!/bin/sh\n/usr/bin/python /usr/s"..., 8192) = 77
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f73774739f0) = 8515
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], 0, NULL) = 8515
--- SIGCHLD (Child exited) @ 0 (0) ---
write(2, "Segmentation fault\n", 19Segmentation fault
) = 19
read(10, "", 8192) = 0
exit_group(139)

There is a workaround for it. Edit /usr/share/sopcast-player/lib/vlc_1_0_x.py with root privileges.
At line 5453:
replace,

callbackmethod=ctypes.CFUNCTYPE(None, Event, ctypes.c_void_p)

by,

callbackmethod=ctypes.CFUNCTYPE(None, ctypes.POINTER(Event), ctypes.c_void_p)

No comments:

Post a Comment