When I try to use dtlogin on OpenBSD 5.7, it core dumps and restarts (only getting as far as the hourglass.)
This is the backtrace I was able to get from the core file:
#0 strchr () at /usr/src/lib/libc/arch/amd64/string/strchr.S:58
#1 0x00000ca6003130df in LoadXloginResources (d=0xca8d0d8b200) at session.c:688
#2 0x00000ca600312abe in ManageSession (d=0xca8d0d8b200) at session.c:431
#3 0x00000ca60030c7ae in StartDisplay (d=0xca8d0d8b200) at dm.c:1197
#4 0x00000ca60030bd88 in CheckDisplayStatus (d=0xca8d0d8b200) at dm.c:826
#5 0x00000ca60030d7bf in ForEachDisplay (f=0xca60030bba9 <CheckDisplayStatus>) at dpylist.c:73
#6 0x00000ca60030bd9e in StartDisplays () at dm.c:835
#7 0x00000ca60030b671 in WaitForChild () at dm.c:588
#8 0x00000ca60031b6b3 in WaitForSomething () at xdmcp.c:403
#9 0x00000ca60030af23 in main (argc=2, argv=0x7f7ffffd6bf8) at dm.c:314
Looking at LoadXloginResources() within session.c, this bit of code seems to trigger the core dump/crash:
/*
* replace any "-" or "." in the language name with "_". The C
* preprocessor used by xrdb does not accept "-" or "." in a name.
*/
while ( (p = strchr(language, '-')) != NULL ) {
*p = '_';
}
while ( (p = strchr(language, '.')) != NULL ) {
*p = '_';
}
Any idea how to fix it?
It seems that language was uninitialized at that point.
Oddly enough the language variable (or lang_key) is never used after these while loops so it was safe to just remove it.
Attached is a patch. Dtlogin now works (Nice new logo btw) :)
Also, I have summoned flibble (via PM) who is one of the maintainers of CDE. Hopefully we can get these 3 patches in.
Last edit: Karsten Pedersen 2015-06-14
Karsten:
Thank you! :-)
Glad I could help.