Systemd blowing away screen sessions

Systemd wipes out screen sessions, thus making screen unusable.

I've been thrashing around for hours, following these instructions and discussions:

http://lists.freedesktop.org/archives/systemd-devel/2011-May/002416.html
https://bugzilla.redhat.com/show_bug.cgi?id=612712
http://0pointer.de/blog/projects/systemd.html
http://en.gentoo-wiki.com/wiki/Systemd#PAM_support:_su.2C_sudo.2C_screen
http://wiki.debian.org/systemd

I tried adding this line as suggested, to almost every file in /etc/pam.d, but it seems to silently not have any effect at all:

session required pam_systemd.so create-session=1 kill-user=0 kill-session=0

It appears not to be able to be forced to NOT wipe out screen sessions.

I tried turning debug logging on for systemd, and it seems that systemd is mounting the cgroups, and is compiled to support PAM:

[ 1.094966] systemd[1]: systemd 40 running in system mode. (+PAM +LIBWRAP -AUDIT -SELINUX +SYSVINIT -LIBCRYPTSETUP; angstrom)

The pam_systemd.so module is also present.

I looked at the source to setup-scripts/build/tmp-angstrom_2010_x-eglibc/work/armv7a-angstrom-linux-gnueabi/systemd-git-r17/packages-split/systemd-dbg/usr/src/debug/systemd-git-r17/git/src/login/pam-module.c, and the args seem to be correct.

This is on an image built from bitbake on 2/14/12, a simple cloud9-image.

I do get a lot of these, but it might just be noise, though I have to wonder if important clues might be missed because of it:

[ 1.968177] systemd[1]: Failed to open syslog for logging: Invalid argument

Other than that, I'm stumped.

At the moment the screen session gets destroyed, this appears in dmesg:

[ 162.755125] systemd[1]: dropbear@192.168.42.4:22-192.168.42.177:40110.service stopping timed out. Killing.
[ 162.767310] systemd[1]: dropbear.socket: One connection closed, 1 left.
[ 162.774914] systemd[1]: dropbear@192.168.42.4:22-192.168.42.177:40110.service ch anged stop-sigterm -> failed
[ 162.786069] systemd[1]: Unit dropbear@192.168.42.4:22-192.168.42.177:40110.service entered failed state.
[ 162.796574] systemd[1]: Failed to open syslog for logging: Invalid argument
[ 162.804301] systemd[1]: Running GC...
[ 170.536606] systemd[1]: Received SIGCHLD from PID 284 (screen).
[ 170.545864] systemd[1]: Received SIGCHLD from PID 272 (dropbear).
[ 170.553801] systemd[1]: Got SIGCHLD for process 272 (dropbear)
[ 170.560119] systemd[1]: Child 272 died (code=exited, status=0/SUCCESS)
[ 170.568124] systemd[1]: Child 272 belongs to dropbear@192.168.42.4:22-192.168.42.177:40111.service
[ 170.577902] systemd[1]: dropbear@192.168.42.4:22-192.168.42.177:40111.service: main process exited, code=exited, status=0
[ 170.594275] systemd[1]: dropbear@192.168.42.4:22-192.168.42.177:40111.service changed running -> stop-sigterm
[ 170.610754] systemd[1]: Failed to open syslog for logging: Invalid argument
[ 170.618362] systemd[1]: Got SIGCHLD for process 284 (screen)
[ 170.625516] systemd[1]: Child 284 died (code=exited, status=0/SUCCESS)
[ 170.633041] systemd[1]: Got SIGCHLD for process 285 (screen)
[ 170.639182] systemd[1]: Child 285 died (code=exited, status=1/FAILURE)
[ 170.647759] systemd[1]: Got SIGCHLD for process 287 (top)
[ 170.654115] systemd[1]: Child 287 died (code=exited, status=129/n/a)
[ 170.661329] systemd[1]: Got SIGCHLD for process 286 (sh)
[ 170.667099] systemd[1]: Child 286 died (code=killed, status=1/HUP)
[ 170.674291] systemd[1]: Received SIGCHLD from PID 286 (n/a).
[ 170.680937] systemd[1]: Accepted connection on private bus.
[ 170.688320] systemd[1]: Got D-Bus request: org.freedesktop.systemd1.Agent.Released() on /org/freedesktop/systemd1/agent
[ 170.701646] systemd[1]: Got D-Bus request: org.freedesktop.DBus.Local.Disconnect ed() on /org/freedesktop/DBus/Local

Is there some magic incantation required to make systemd stop breaking screen?

Thanks.

-ken

Adding the systemd list. I had this working a few systemd releases ago, but I now get the same behaviour as you are seeing.