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 [EMAIL PROTECTED] and Richard Bass
<[EMAIL PROTECTED]>, 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 via email to