Free the Virtual Terminal and Keyboard on a segfault in all cases... diff -ur qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp qt-2.3.8/src/kernel/qkeyboard_qws.cpp --- qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp 2004-07-22 01:07:45.000000000 +0200 +++ qt-2.3.8/src/kernel/qkeyboard_qws.cpp 2004-07-23 19:13:52.000000000 +0200 @@ -314,7 +314,7 @@ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65 - { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66 + { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66 { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69 Nur in qt-2.3.8/src/kernel/: qkeyboard_qws.cpp.orig. diff -ur qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp qt-2.3.8/src/kernel/qwindowsystem_qws.cpp --- qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp 2004-07-22 01:07:45.000000000 +0200 +++ qt-2.3.8/src/kernel/qwindowsystem_qws.cpp 2004-07-23 19:13:52.000000000 +0200 @@ -1273,6 +1273,18 @@ { } +static void catchSegvSignal( int ) +{ +#ifndef QT_NO_QWS_KEYBOARD + if ( qwsServer ) + qwsServer->closeKeyboard(); +#endif + QWSServer::closedown(); + fprintf(stderr, "Segmentation fault.\n"); + exit(1); +} + + /*! \class QWSServer qwindowsystem_qws.h \brief Server-specific functionality in Qt/Embedded @@ -1365,6 +1377,7 @@ } signal(SIGPIPE, ignoreSignal); //we get it when we read + signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash #endif focusw = 0; mouseGrabber = 0; Nur in qt-2.3.8/src/kernel/: qwindowsystem_qws.cpp.orig.