michaelforney / swc

a library for making a simple Wayland compositor
MIT License
614 stars 52 forks source link

Could not connect to swc-launch #70

Open cyanate opened 6 years ago

cyanate commented 6 years ago

I've installed mesa-git with wayland support, but when starting velox I'm getting:

[swc:libswc/swc.c:123] ERROR: Could not connect to swc-launch

This seems to be a libswc problem, but you've written that, too.

michaelforney commented 6 years ago

How are you starting velox? You need to launch it with swc-launch. For example, swc-launch velox.

mesa with wayland support should be irrelevant since swc uses wld, not mesa.

biblepix commented 5 years ago

Hello everybody, I have been trying to set up velox too, but I am getting a similar error message: 'swc-launch velox' gives me: Running on /dev/tty7 Failed to activate VT: no such device or address But /dev/tty7 exists and is accessible. Can you help me?

michaelforney commented 5 years ago

Looks like you are getting an error from https://github.com/michaelforney/swc/blob/5b20050872f8ad29cfc97729f8af47b6b3df5393/launch/launch.c#L384

Where are you running swc-launch velox from? Can you add a line to print out the value of vt before that error message?

biblepix commented 5 years ago

I'm running it from a non-X login terminal; there is no other line of output before VT.

michaelforney commented 5 years ago

I meant you should add a print statement so I can try to figure out what is going on.

In fact, an strace log might be even more helpful

strace swc-launch velox

(you will likely need to run this as root)

biblepix commented 5 years ago

On Sat, 10 Nov 2018 22:40:26 -0800 Michael Forney notifications@github.com wrote:

I meant you should add a print statement so I can try to figure out what is going on.

In fact, an strace log might be even more helpful

strace swc-launch velox

Thank you Michael for your patience! I've never worked with strace, but here you are with a printout made as root. Good luck to you! Peter

Vollmar Translations Peter Vollmar CH-9000 St. Gallen www.vollmar.ch

===== The Word for Monday, 12 November 2018 ===== A thousand years in your sight are but as yesterday when it is past, or as a watch in the night. Psalm 90:4 (ESV) We are but of yesterday and know nothing, for our days on earth are a shadow. Job 8:9 [bible2.net]

execve("/usr/bin/swc-launch", ["swc-launch", "velox"], 0xbfc53d1c / 35 vars /) = 0 brk(NULL) = 0x1a41000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=197511, ...}) = 0 mmap2(NULL, 197511, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76fc000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/libdrm.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2605\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=79400, ...}) = 0 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76fa000 mmap2(NULL, 83688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76e5000 mmap2(0xb76f8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0xb76f8000 close(3) = 0 openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\222\1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1967580, ...}) = 0 mmap2(NULL, 1976768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7502000 mprotect(0xb76de000, 4096, PROT_NONE) = 0 mmap2(0xb76df000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1dc000) = 0xb76df000 mmap2(0xb76e2000, 10688, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76e2000 close(3) = 0 openat(AT_FDCWD, "/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\225\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=820608, ...}) = 0 mmap2(NULL, 823400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7438000 mmap2(0xb7500000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc7000) = 0xb7500000 close(3) = 0 set_thread_area({entry_number=-1, base_addr=0xb76fb740, limit=0x0fffff, seg_32bit=1, contents=0, read_exec_only=0, limit_in_pages=1, seg_not_present=0, useable=1}) = 0 (entry_number=6) mprotect(0xb76df000, 8192, PROT_READ) = 0 mprotect(0xb7500000, 4096, PROT_READ) = 0 mprotect(0xb76f8000, 4096, PROT_READ) = 0 mprotect(0x440000, 4096, PROT_READ) = 0 mprotect(0xb7756000, 4096, PROT_READ) = 0 munmap(0xb76fc000, 197511) = 0 socketpair(AF_UNIX, SOCK_SEQPACKET, 0, [3, 4]) = 0 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 rt_sigaction(SIGCHLD, {sa_handler=0x43e3a1, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigaction(SIGUSR1, {sa_handler=0x43e407, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigaction(SIGUSR2, {sa_handler=0x43e43d, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigaction(SIGINT, {sa_handler=0x43e474, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigaction(SIGTERM, {sa_handler=0x43e474, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[INT USR1 USR2 TERM CHLD RTMIN RT_1], NULL, 8) = 0 openat(AT_FDCWD, "/dev/tty0", O_RDWR) = 5 ioctl(5, VT_OPENQRY, 0xbfb89040) = 0 close(5) = 0 write(2, "running on /dev/tty7\n", 21) = 21 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 fstat64(0, {st_mode=S_IFCHR|0600, st_rdev=makedev(4, 4), ...}) = 0 brk(NULL) = 0x1a41000 brk(0x1a62000) = 0x1a62000 brk(0x1a63000) = 0x1a63000 readlink("/proc/self/fd/0", "/dev/tty4", 4095) = 9 stat64("/dev/tty4", {st_mode=S_IFCHR|0600, st_rdev=makedev(4, 4), ...}) = 0 openat(AT_FDCWD, "/dev/tty7", O_RDWR|O_NOCTTY) = 5 fstat64(5, {st_mode=S_IFCHR|0620, st_rdev=makedev(4, 7), ...}) = 0 ioctl(5, VT_GETSTATE, 0xbfb88fe6) = 0 ioctl(5, KDGKBMODE, 0x44135c) = 0 ioctl(5, KDGETMODE, 0x441360) = 0 ioctl(5, KDSKBMODE, 0x4) = 0 ioctl(5, KDSETMODE, 0x1) = 0 ioctl(5, VT_SETMODE, 0xbfb88fec) = 0 ioctl(5, VT_ACTIVATE, 0xb7756fb4) = -1 ENXIO (Kein passendes Gerät bzw. keine passende Adresse gefunden) write(2, "failed to activate VT: No such d"..., 49) = 49 ioctl(5, VT_SETMODE, 0xbfb88fec) = 0 ioctl(5, KDSETMODE, 0) = 0 ioctl(5, KDSKBMODE, 0x3) = 0 exit_group(1) = ? +++ exited with 1 +++

michaelforney commented 5 years ago

Thanks, that's really helpful.

ioctl(5, VT_ACTIVATE, 0xb7756fb4)

This line looks bogus to me. It should be passing the VT number to activate (in this case 7), not a pointer. I can't really explain this since vt is set at https://github.com/michaelforney/swc/blob/c0e9489044f45440542aab10d21031a35cb20a91/launch/launch.c#L353, and is not modified until it is passed to the ioctl here: https://github.com/michaelforney/swc/blob/c0e9489044f45440542aab10d21031a35cb20a91/launch/launch.c#L385

Perhaps you could add printf("vt: %d\n", vt); in between each of those ioctls between when vt is set on line 353, and used on line 385?

My only thought is that somehow the structures in the linux headers used to build swc-launch don't match your running kernel, which is causing one of the ioctls to clobber the value of vt.

Could you describe your operating system and the toolchain you used to build swc?

michaelforney commented 5 years ago

Whoops, I meant ioctl(5, VT_ACTIVATE, 0xb7756fb4) looks bogus. The VT_SETMODE looks fine.

DmitryHetman commented 4 years ago

How are you starting velox? You need to launch it with swc-launch. For example, swc-launch velox.

mesa with wayland support should be irrelevant since swc uses wld, not mesa.

Is it bad for performance?