Developers please consider that Debian attempts to maintain binary
compatibility with other Linux distributions and if you break
"proprietary shit" that runs on other distributions then it could be
your fault (especially when a new version of libc6 is rushed into
unstable to fix it not being uploaded to experimental).
However it is completely understandable that only those who can run the
software can provide enough information to help you fix the problem. And
the original poster's bug report was poor.
A lot of proprietary software is never officially supported on Debian
GNU/Linux. One could only confidently tell a client that software will
run on an unsupported platform if these kinds of bug reports are taken
seriously. Otherwise the freedom to use a particular platform (and we
all know which the best one is) is completely lost for many users as
they are forced to use whatever Linux vendor and release version a
software company dictates.
I suspect Debian's founders had this in mind when writing section 5 of
the Social Contract. Without maintaining binary compatibility the mere
worry that one might need to run a proprietary program at some time in
the future could be enough to stop one using this platform. Even though
I have hardly used Win4Lin the mere fact it is available gave me the
confidence to remove the ability to boot into Windows a long time ago.
This is a tricky balance because there are significant costs that I
detest. I'm tied to a 2.4 kernel. I can't apply many types of kernel
patches. I can't give useful feedback in the event of a kernel panic. In
other words it kills the kinds of feedback and participation that helps
make free software successful.
It looks like you're got more important software in main to worry about
right now. In the meantime I'm sure Elmar and myself are happy to run
libc6 from testing. As it stands I'd suggest sid's libc6 problems are
release-critical and the severity level of this bug report should be
serious.
I don't want to spend any extra time trying to debug this so if the
following information is insufficient for you let NeTraverse sort it
out. Their mailing list is win4lin-users@netraverse.com and Richard Bass
<rbass@netraverse.com>, Systems Software Architect, NeTraverse, Inc. is
very active on the list.
Upon booting win4lin tries to load its proprietary kernel modules. With
libc6 2.3.2-2 this happens:
Starting Win4Lin: /opt/win4lin/adminbin/rlock_tune: line 205: 712 Segmentation fault "$STATICMERGE"/bin/max_sessions >>"$LOGFILE" 2>&1
max_sessions failed. Here is the output:
/opt/win4lin/drivers/tools/loadem: line 77: 739 Segmentation fault "$STATICMERGE"/bin/max_sessions >>"$LOGFILE" 2>&1
win4lin: mki_version 5, num_cpus 2, pae 0
win4Lin: preempt_enable 0x00000000
/opt/win4lin/drivers/tools/loadem: line 196: 865 Segmentation fault "$STATICMERGE"/drivers/tools/mknode_linux $SESSIONS >/dev/null 2>&1
done.
I have attached a strace of what happens when one later tries to run
win:
strace -f -o strace.txt win
/bin/win: line 231: 1695 Segmentation fault winconfig $USE_CONFIG
list version >/dev/null 2>&1
/opt/win4lin/bin/win_probe: line 38: 1743 Segmentation fault
$STATICMERGE/publicbin/dosexec ++VLW $CONFIG 2>/dev/null
/bin/win line 231 is a call to:
check_config
The check_config function is:
check_config()
{
# Note:
# If the "win" configuration does already exist,
# AND the "dos" configuration does already exist
# then the winconfig command will silently and
# automatically create the default dos and win configurations.
winconfig $USE_CONFIG list version > /dev/null 2>&1
STATE=$?
if [ $STATE -eq 3 ]
then
# Configuration does not exist.
Log "Configuration $USE_CONFIG does not exist"
# No such specified config.
DM="LCC.PCI.UNIX.JANUS"
usrMsg STRING CONFIG_NE \
"CONFIG_NE: win: ERROR: The configuration $USE_CONFIG does not exist." \
win "$USE_CONFIG"
"$STATICMERGE"/x_msg -e "$USRMSG_STRING"
exit 1
fi
if [ $STATE -eq 4 ]
then
# Unreadable configuration.
Log "Configuration $USE_CONFIG is not readable"
DM="LCC.PCI.UNIX.JANUS"
usrMsg STRING CONFIG_NR \
"CONFIG_NR: win: ERROR: The configuration $USE_CONFIG is not readable."\
win "$USE_CONFIG"
"$STATICMERGE"/x_msg -e "$USRMSG_STRING"
exit 1
fi
}
Line 205 of /opt/win4lin/adminbin/rlock_tune is:
Auto_Adjust
The Auto_Adjust function is:
Auto_Adjust()
{
CHANGE=nochange
if [ "_$MERGE_CDRIVE_G_LOCKS" = "_off" ]
then
MERGE_RLOCK_AUTO_SCALE=not_used
fi
if [ "_$MERGE_RLOCK_AUTO_SCALE" != "_on" \
-a $MERGE_RLOCK_FILETABLE_SIZE -ne 0 ]
then
return
fi
SESSIONS=`"$STATICMERGE"/bin/max_sessions`
Log SESSIONS=$SESSIONS
if [ "x$SESSIONS" = "x" ]
then
Log "max_sessions failed. Here is the output:"
"$STATICMERGE"/bin/max_sessions >> "$LOGFILE" 2>&1
VAL=$?
Log "exit code $VAL"
SESSIONS=1
fi
# The multi-session settings are somewhat guesses based
# on what some alpha and beta testers reported.
# The actual settings depend a lot on what the actual
# Windows applications that users are using at the time.
# So this auto-adjust will only make adjustments upwards.
# Note: to disable this automatic adjustment, set
# MERGE_RLOCK_AUTO_SCALE to "off" in /etc/default/merge
if [ "_$MERGE_CDRIVE_G_LOCKS" = "_off" ]
then
# Only need the rlock tables for files on shared drives.
# So don't need large tables for most situations.
FILETABLE=512
OPENTABLE=768
LOCKTABLE=1024
HASHTABLE=100
elif [ $SESSIONS -le 2 ]
then
# Make sure that the settings are at least as large as the
# values needed to run Winstone96 and Winstone97 in a single
# session. Some testing has also shown that for two
# sessions these numbers work while using MS-Office apps.
FILETABLE=512
OPENTABLE=768
LOCKTABLE=1024
HASHTABLE=512
elif [ $SESSIONS -le 5 ]
then
# For 5 users (450Mhz 512MbRAM)
FILETABLE=1536
OPENTABLE=2304
LOCKTABLE=3072
HASHTABLE=1024
elif [ $SESSIONS -le 10 ]
then
# For 10-12 users (833Mhz 512Mb)
FILETABLE=7168
OPENTABLE=9216
LOCKTABLE=8192
HASHTABLE=2048
elif [ $SESSIONS -le 25 ]
then
# For 25 users (2x933Mhz 1Gb)
FILETABLE=8192
OPENTABLE=8192
LOCKTABLE=8192
HASHTABLE=8192
else
# Big numbers!
FILETABLE=10240
OPENTABLE=10240
LOCKTABLE=10240
HASHTABLE=10240
fi
# Other tweaks the admin might have to make:
# Up the linux file-max parameter (/proc/sys/fs/file-max)
# Up the linux inode limit (2.2 Kernels only) (/proc/sys/fs/inode-max)
if [ "$MERGE_RLOCK_FILETABLE_SIZE" -lt $FILETABLE ]
then
MERGE_RLOCK_FILETABLE_SIZE=$FILETABLE
CHANGE=changed
Log MERGE_RLOCK_FILETABLE_SIZE changed to $FILETABLE
fi
if [ "$MERGE_RLOCK_OPENTABLE_SIZE" -lt $OPENTABLE ]
then
MERGE_RLOCK_OPENTABLE_SIZE=$OPENTABLE
CHANGE=changed
Log MERGE_RLOCK_OPENTABLE_SIZE changed to $OPENTABLE
fi
if [ "$MERGE_RLOCK_LOCKTABLE_SIZE" -lt $LOCKTABLE ]
then
MERGE_RLOCK_LOCKTABLE_SIZE=$LOCKTABLE
CHANGE=changed
Log MERGE_RLOCK_LOCKTABLE_SIZE changed to $LOCKTABLE
fi
if [ "$MERGE_RLOCK_HASHTABLE_SIZE" -lt $HASHTABLE ]
then
MERGE_RLOCK_HASHTABLE_SIZE=$HASHTABLE
CHANGE=changed
Log MERGE_RLOCK_HASHTABLE_SIZE changed to $HASHTABLE
fi
}
Regards,
Adam
Attachment:
strace.txt.bz2
Description: application/bzip