I find lightdm-gtk-greeter segfaults when lightdm runs. I did some digging and it gets run with a login class of daemon but if I change that to root it runs fine(!) I did this by adding lightdm_login_class="root" to the rc.d script. Unfortunately it appears to not dump core which makes debugging a challenge.. If I run lightdm manually I get.. [maarsy-acq3 4:22] /usr/src> sudo limits -C daemon /usr/local/sbin/lightdm -d [+0.00s] DEBUG: Logging to /var/log/lightdm/lightdm.log [+0.00s] DEBUG: Starting Light Display Manager 1.30.0, UID=0 PID=26501 [+0.00s] DEBUG: Loading configuration dirs from /usr/local/share/lightdm/lightdm.conf.d [+0.00s] DEBUG: Loading configuration dirs from /etc/xdg/lightdm/lightdm.conf.d [+0.00s] DEBUG: Loading configuration dirs from /usr/local/etc/xdg/lightdm/lightdm.conf.d [+0.00s] DEBUG: Loading configuration from /usr/local/etc/lightdm/lightdm.conf [+0.00s] DEBUG: Registered seat module local [+0.00s] DEBUG: Registered seat module xremote [+0.00s] DEBUG: Using D-Bus name org.freedesktop.DisplayManager [+0.00s] WARNING: Failed to get list of logind seats: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.login1 was not provided by any .service files [+0.00s] DEBUG: Adding default seat [+0.00s] DEBUG: Seat seat0: Loading properties from config section Seat:* [+0.00s] DEBUG: Seat seat0: Starting [+0.00s] DEBUG: Seat seat0: Creating greeter session [+0.00s] DEBUG: Seat seat0: Creating display server of type x [+0.42s] DEBUG: Could not run plymouth --ping: Failed to execute child process ?plymouth? (No such file or directory) [+0.42s] DEBUG: Using VT 9 [+0.42s] DEBUG: Seat seat0: Starting local X display on VT 9 [+0.42s] DEBUG: XServer 0: Logging to /var/log/lightdm/x-0.log [+0.42s] DEBUG: XServer 0: Writing X server authority to /var/run/lightdm/root/:0 [+0.42s] DEBUG: XServer 0: Launching X Server [+0.42s] DEBUG: Launching process 26503: /usr/local/bin/X :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt9 -novtswitch [+0.42s] DEBUG: XServer 0: Waiting for ready signal from X server :0 [+0.42s] DEBUG: Acquired bus name org.freedesktop.DisplayManager [+0.42s] DEBUG: Registering seat with bus path /org/freedesktop/DisplayManager/Seat0 [+0.42s] DEBUG: Loading users from org.freedesktop.Accounts [+0.42s] DEBUG: User /org/freedesktop/Accounts/User19999 added [+2.09s] DEBUG: Got signal 30 from process 26503 [+2.09s] DEBUG: XServer 0: Got signal from X server :0 [+2.09s] DEBUG: XServer 0: Connecting to XServer :0 [+2.51s] DEBUG: Seat seat0: Display server ready, starting session authentication [+2.51s] DEBUG: Session pid=26514: Started with service 'lightdm-greeter', username 'lightdm' [+2.51s] DEBUG: Session pid=26514: Authentication complete with return value 0: Success [+2.51s] DEBUG: Seat seat0: Session authenticated, running command [+2.51s] DEBUG: Session pid=26514: Running command /usr/local/sbin/lightdm-gtk-greeter [+2.51s] DEBUG: Creating shared data directory /var/lib/lightdm-data/lightdm [+2.51s] DEBUG: Session pid=26514: Logging to /var/log/lightdm/seat0-greeter.log [+2.93s] DEBUG: Activating ConsoleKit session maarsy-acq3.gsoft.com.au-1574310147.624690-886096234 [+3.57s] DEBUG: Greeter closed communication channel [+3.58s] DEBUG: Session pid=26514: Exited with return value 1 [+3.58s] DEBUG: Seat seat0: Session stopped [+3.58s] DEBUG: Seat seat0: Stopping; failed to start a greeter [+3.58s] DEBUG: Seat seat0: Stopping [+3.58s] DEBUG: Seat seat0: Stopping display server [+3.58s] DEBUG: Sending signal 15 to process 26503 [+3.72s] DEBUG: Process 26503 exited with return value 0 [+3.72s] DEBUG: XServer 0: X server stopped [+3.72s] DEBUG: Releasing VT 9 [+3.72s] DEBUG: XServer 0: Removing X server authority /var/run/lightdm/root/:0 [+3.72s] DEBUG: Seat seat0: Display server stopped [+3.72s] DEBUG: Seat seat0: Stopped [+3.72s] DEBUG: Required seat has stopped [+3.72s] DEBUG: Stopping display manager [+3.72s] DEBUG: Display manager stopped [+3.72s] DEBUG: Stopping daemon [+3.72s] DEBUG: Exiting with return value 1 ktrace -di on it produced a 1.7GB file though.. I found this nugget in it: 26561 Xorg RET munmap 0 26561 Xorg CALL openat(AT_FDCWD,0x80096d243,0x100002<O_RDWR|O_CLOEXEC>) 26561 Xorg NAMI "/dev/mem" 26561 Xorg RET openat 3 26561 Xorg CALL ioctl(0x3,MEMRANGE_SET,0x7fffffffeab0) 26561 Xorg RET ioctl -1 errno 2 No such file or directory I have attached the result of.. kdump -s | bzip2 > kdump.txt.bz2 which is only 11MB. as well as.. 26563 lightdm CALL fcntl(0xa5163,F_SETFD,FD_CLOEXEC) 26563 lightdm RET fcntl -1 errno 9 Bad file descriptor 26563 lightdm CALL fcntl(0xa5164,F_SETFD,FD_CLOEXEC) 26563 lightdm RET fcntl -1 errno 9 Bad file descriptor 26563 lightdm CALL fcntl(0xa5165,F_SETFD,FD_CLOEXEC) 26563 lightdm RET fcntl -1 errno 9 Bad file descriptor 26563 lightdm CALL fcntl(0xa5166,F_SETFD,FD_CLOEXEC) 26563 lightdm RET fcntl -1 errno 9 Bad file descriptor (Probably not related to this but still)
Actually I couldn't attach it, I have hosted it at http://www.gsoft.com.au/~doconnor/kdump.txt.bz2
This looks like a bug I thought I fixed. The problem could be lightDM requiring locked memory, and the daemon class limits that to 128MB by default, which is not enough. Please check that you have this in /usr/local/etc/lightdm/lightdm.conf: [LightDM] lock-memory=false If it still fails maybe the daemon is ignoring that config. You can make it work anyway by modifying /etc/login.conf and setting the locked memory limit for daemon to 256 MB and restarting lightdm (don't forget to run cap_mkdb /etc/login.conf). Hope this helps.
Unfortunately lock-memory=false is already there so I guess it must be a different issue.
(In reply to darius from comment #3) > Unfortunately lock-memory=false is already there so I guess it must be a different issue. Have you anyway tried to increment the locked memory limit in login.conf? It's worth a test anyway.
Good idea, I should have done that! It does work if I increase the locked memory limit for daemon (and remove my mod). Perhaps the greeter is trying to lock memory too (and the config directive is for lightdm itself)?
Darius suggested on IRC that maybe it's lightdm-gtk-greeter locking memory, and he's correct. in light-gtk-greeter sources at src/lightdm-gtk-greeter.c line 2752: /* Prevent memory from being swapped out, as we are dealing with passwords */ mlockall (MCL_CURRENT | MCL_FUTURE); This is unconditional, we can simply comment it out or implement a configuration directive or something. woodsb02 what do you think?
Created attachment 209703 [details] Proposed patch I'm proposing this simple patch. It comments out the mlockall(2) system call, stopping the greeter from locking all its memory. This is the correct solution IMHO, there is no point in locking all the memory a GUI program uses. Ben what you think about this?
Can you please check if the most recent updated to the x11/lightdm port (new package version is lightdm-1.30.0_2) has fixed the problem for you? Essentially I was getting reports of a different issue, and the problem turned out to be the lightdm user needed access to the video group in order to use the graphics drivers. https://svnweb.freebsd.org/changeset/ports/523696
I don't need to add lightdm to the video group, but perhaps it is required for other video drivers (I am using nvidia) For my case it only seems to be the locked memory issue.
Hi darius and madpilot, As it turns out, the upstream lightdm-gtk-greeter developers have recently disabled mlockall, and this change is included in the 2.0.7 release. This has been committed to the ports head branch in r526738: http://svnweb.freebsd.org/changeset/ports/526738 Can you please test and confirm it is fixed? I will close this bug in the meantime. Regards, Ben
Comment on attachment 209703 [details] Proposed patch This patch is correct, but it is no longer needed since it has been incorporated upstream.