amarula / cutekeyboard

A QML based on screen virtual keyboard for embedded QML applications
MIT License
17 stars 12 forks source link

Application won't close normally when using cutekeyboard #24

Open CaWeissWz opened 1 week ago

CaWeissWz commented 1 week ago

I am trying to build an application on the raspberry pi platforn which utilizes cutekeybord. However, as soon as cutekeyboard is added, my app fails to close normally.

To rule out any misconfiguration that might exist on my machine, I tried to reproduce the problem on a fresh OS image. Therefore I installed "Raspberry Pi OS (64-Bit)" on a SD Card with the Windows tool "Raspberry Pi Imager". I booted my Raspberry-Pi 4 into the graphical environment and executed the following commands on the graphical terminal:

sudo apt update
sudo apt upgrade
sudo apt install qt6-declarative-private-dev qt6-wayland qml6-module-qtquick qml6-module-qtquick-controls qml6-module-qtquick-layouts qml6-module-qtquick-window qml6-module-qtquick-templates qml6-module-qtqml-workerscript
git clone https://github.com/amarula/cutekeyboard.git ~/cutekeyboard
cd cutekeyboard
mkdir build
cd build
qmake6 .. CONFIG+=BUILD_EXAMPLES
make
sudo make install

When I now start example, i get a working demonstration of cutekeyboard (as intended):

grafik

But when trying to close the program by pressing on the "X" in the upper right corner of the window, the following error message appears on the console:

grafik

When I remove the "InputPanel" section from the main.qml file (and then repeat the make and install steps), the app appears as before, just without the keyboard. When it's closed, it will terminate normally. So I suppose there must be a problem with the keyboard itsself.

AndreaRicchi commented 1 day ago

Really interesting...

I've done some quick analysis compiling with sanitiser:

❯ ~/Qt/5.15.2/gcc_64/bin/qmake . CONFIG+=BUILD_EXAMPLES CONFIG+=sanitizer CONFIG+=sanitize_address CONFIG+=debug CONFIG+=qml_debug && make -j4

and found out this:

QML debugging is enabled. Only use this in a safe environment.
AddressSanitizer:DEADLYSIGNAL
=================================================================
==124732==ERROR: AddressSanitizer: SEGV on unknown address 0x000000004ac5 (pc 0x726f43e40793 bp 0x603000004c48 sp 0x7fffc62c27c0 T0)
==124732==The signal is caused by a READ memory access.
    #0 0x726f43e40793 in QXcbIntegration::~QXcbIntegration() (/home/rcc/Qt/5.15.2/gcc_64/plugins/platforms/../../lib/libQt5XcbQpa.so.5+0x40793) (BuildId: e1179142168aa899659b22a183c0a43e131a4f22)
    #1 0x726f43e40818 in QXcbIntegration::~QXcbIntegration() (/home/rcc/Qt/5.15.2/gcc_64/plugins/platforms/../../lib/libQt5XcbQpa.so.5+0x40818) (BuildId: e1179142168aa899659b22a183c0a43e131a4f22)
    #2 0x726f4dd68f26 in QGuiApplicationPrivate::~QGuiApplicationPrivate() (/home/rcc/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5+0x168f26) (BuildId: bffe8076fee9a98e38828285a64e0b7672b377c8)
    #3 0x726f4dd690e8 in QGuiApplicationPrivate::~QGuiApplicationPrivate() (/home/rcc/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5+0x1690e8) (BuildId: bffe8076fee9a98e38828285a64e0b7672b377c8)
    #4 0x726f4bed3ee5 in QObject::~QObject() (/home/rcc/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5+0x2d3ee5) (BuildId: 7e528ef9a04c67ed3f2b173a8fe86169032b4dd7)
    #5 0x726f4be9fc8e in QCoreApplication::~QCoreApplication() (/home/rcc/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5+0x29fc8e) (BuildId: 7e528ef9a04c67ed3f2b173a8fe86169032b4dd7)
    #6 0x726f4dd68738 in QGuiApplication::~QGuiApplication() (/home/rcc/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5+0x168738) (BuildId: bffe8076fee9a98e38828285a64e0b7672b377c8)
    #7 0x5b29f0be2fa2 in main /home/rcc/Projects/amarula/amarula/cutekeyboard/example/main.cpp:23
    #8 0x726f4b429d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #9 0x726f4b429e3f in __libc_start_main_impl ../csu/libc-start.c:392
    #10 0x5b29f0be26a4 in _start (/home/rcc/Projects/amarula/amarula/cutekeyboard/example/example+0x36a4) (BuildId: 090e227f8f0b7b24969484c6dd71b07b532d9b30)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/home/rcc/Qt/5.15.2/gcc_64/plugins/platforms/../../lib/libQt5XcbQpa.so.5+0x40793) (BuildId: e1179142168aa899659b22a183c0a43e131a4f22) in QXcbIntegration::~QXcbIntegration()
==124732==ABORTING

As soon as I have some more time I'll try to look deeper into this bug.