Re: [BUG] 2.4.[01] lockups

Ivan Borissov Ganev (ganev@cc.gatech.edu)
Thu, 15 Feb 2001 00:31:37 -0500 (EST)


On Sun, 11 Feb 2001, Pavel Machek wrote:

> Login via network or serial cable, and see if /proc/interrupts entry
> for keyboard/mouse changes as you type. Attempt to blink keyboard leds
> with setleds.
> Pavel

On Mon, 12 Feb 2001, Ville Herva wrote:

> Also, try killing gpm.
> -- v --

Hello,

Thanks for the suggestions. Due to lack of a terminal or second computer
I've had no chance still to try the above suggestions. However, I have
tried many different versions of the 2.4.X series to no avail. I tried to
compile out APIC/IO-APIC stuff, I tried Alan's ac9 patches, etc.

However, I recently noticed that most times the console freezes when I am
doing a filename completion (which involves a beep when the completion is
not unique in KDE). I have changed the beep to be much shorter and with
much less annoying pitch from the KDE control panel.

I have found out that going in the control panel and just clicking the
"Test" button to test out the beep would freeze the console in less than
10-15 tries.

I got the sources for "kcontrol" and it seems the beeping is done from
some function of the keyboard driver, although I do not understand KDE
much and have no idea how to continue tracing the bug further.

Currently I have set the pitch to 0 Hz (no beeping) and have not had a
lockup yet. I will continue testing, however, if someone can give me a
suggestion how to go about tracing the code that actually does the
beeping (be it in KDE or the kernel) I'd be very grateful.

Cheers,
--Ivan

P.S. The relevant code from kdebase-2.0.1/kcontrol/bell/bell.cpp is:

void KBellConfig::ringBell()
{
// store the old state
XKeyboardState old_state;
XGetKeyboardControl(kapp->getDisplay(), &old_state);

// switch to the test state
XKeyboardControl kbd;
kbd.bell_percent = m_volume->value();
kbd.bell_pitch = m_pitch->value();
if (m_volume->value() > 0)
kbd.bell_duration = m_duration->value();
else
kbd.bell_duration = 0;
XChangeKeyboardControl(kapp->getDisplay(),
KBBellPercent | KBBellPitch | KBBellDuration,
&kbd);
// ring bell
XBell(kapp->getDisplay(),100);

// restore old state
kbd.bell_percent = old_state.bell_percent;
kbd.bell_pitch = old_state.bell_pitch;
kbd.bell_duration = old_state.bell_duration;
XChangeKeyboardControl(kapp->getDisplay(),
KBBellPercent | KBBellPitch | KBBellDuration,
&kbd);
}

------------------------------------------------------------------------------
Ivan Ganev 327236 Georgia Tech Station
College of Computing Atlanta, GA 30332
Georgia Institute of Technology 1-(404)-365-8694
ganev@cc.gatech.edu http://www.cc.gatech.edu/~ganev
------------------------------------------------------------------------------
Learning is not compulsory. Neither is survival.
-- W. Edwards Deming

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/