[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#204706: libc6: Binary incompatibility



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


Reply to: