Bug 136512 - Infinite event loop in vcl/unx/gtk3/gtk3gtkdata.cxx
Summary: Infinite event loop in vcl/unx/gtk3/gtk3gtkdata.cxx
Status: CLOSED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: UI (show other bugs)
Version:
(earliest affected)
7.1.0.0.alpha0+
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Caolán McNamara
URL:
Whiteboard: target:7.1.0 target:7.0.2
Keywords:
: 132134 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-09-06 13:03 UTC by Tom
Modified: 2020-09-17 18:54 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments
Screenshot of Gtk+Inspector results (80.14 KB, image/png)
2020-09-08 02:19 UTC, Tom
Details
Screenshot of GdkFrameClockIdle signals (41.46 KB, image/png)
2020-09-08 02:36 UTC, Tom
Details
Screenshot of initial LO window w/o any user interaction (130.06 KB, image/png)
2020-09-08 18:16 UTC, Tom
Details
Patch for vcl/unx/gtk3/gtk3gtkframe.cxx (330 bytes, patch)
2020-09-10 16:42 UTC, Tom
Details
Changed vcl/unx/gtk3/gtk3gtkframe.cxx (159.79 KB, patch)
2020-09-10 16:43 UTC, Tom
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tom 2020-09-06 13:03:31 UTC
Hi,

I am running Linux Mint Mate 18.3 with gtk-3.18.9 installed and I am dealing since LO 6.4 with the issue described below. Unfortunately none of the new releases fixed it, so ...

1) I downloaded, compiled and installed gcc-7.5.0.tar.xz and gperf-3.1.tar.gz

2) I downloaded and compiled the source code of LO 7.0.1.2 (along with a large number of extra packages downloaded by LO) with this configuration

% ./autogen.sh CC=gcc-7.5 CPP=cpp-7.5 CXX=g++-7.5 --without-java --without-doxygen --disable-gstreamer-1-0 --enable-debug
% make

After starting "instdir/program/soffice.bin" the Help menu reports:

   Version: 7.0.1.2
   Build ID: 
   CPU threads: 4; OS: Linux 4.15; UI render: default; VCL: gtk3
   Locale: en-US (en_US.UTF-8); UI: en-US
   Calc: threaded

The overall issue is, that after launching soffice.bin and without any user action afterwards one CPU is driven to 100% load by soffice.bin. This state is only terminated, when I exit soffice.bin, and it is interrupted when I click on the "Recent Files" pop-down menu.

Unfortunately, I am not very experienced with debugging such a complex program. However, by playing around with ddd/gdb I was able to reproduce the issue (that I had found after installing corresponding DEB packages) and track down the origin of this high cpu load to an "infinite event loop" related to the code in "vcl/unx/gtk3/gtk3gtkdata.cxx".

I was able to monitor this loop by adding a simple counter to the following procedures

   GtkSalData::Yield
   gboolean call_userEventFn
   GtkSalData::TriggerUserEventProcessing
   GtkSalData::TriggerAllUserEventsProcessed
   GtkSalDisplay::TriggerUserEventProcessing
   GtkSalDisplay::TriggerAllUserEventsProcessed

and printing its value to the terminal. This is the result of 30s running soffice.bin before pressing Ctrl+Q with a counter added to the procedure call_userEventFn:

...
call_userEventFn: 1485
call_userEventFn: 1486
call_userEventFn: 1487
call_userEventFn: 1488
call_userEventFn: 1489
call_userEventFn: 1490
call_userEventFn: 1491
call_userEventFn: 1492
call_userEventFn: 1493
call_userEventFn: 1494
call_userEventFn: 1495
call_userEventFn: 1496
call_userEventFn: 1497
call_userEventFn: 1498
call_userEventFn: 1499
call_userEventFn: 1500
call_userEventFn: 1501
call_userEventFn: 1502
call_userEventFn: 1503
call_userEventFn: 1504
call_userEventFn: 1505
call_userEventFn: 1506
call_userEventFn: 1507
call_userEventFn: 1508
call_userEventFn: 1509
call_userEventFn: 1510
call_userEventFn: 1511
call_userEventFn: 1512
call_userEventFn: 1513
warn:vcl:15078:15078:vcl/source/window/winproc.cxx:849: ImplHandleKey: Keyboard-Input is sent to a frame without focus
call_userEventFn: 1514
call_userEventFn: 1515
call_userEventFn: 1516
call_userEventFn: 1517
call_userEventFn: 1518
call_userEventFn: 1519
call_userEventFn: 1520
call_userEventFn: 1521
warn:vcl.schedule.deinit:15078:15078:vcl/source/app/scheduler.cxx:175: DeInit task: Timer a: 1 p: 1 framework::AutoRecovery m_aTimer 600000ms (0x35e1cb8)
warn:vcl.schedule.deinit:15078:15078:vcl/source/app/scheduler.cxx:196: DeInit active tasks: 1 (ignored: 0)

I understand that this issue is not easy to be reproduced and fixed. So, if I can help by running some tests, please let me know.

Thanks
Tom
Comment 1 Roman Kuznetsov 2020-09-06 17:47:43 UTC
Caolan, possibly you will interested in this?
Comment 2 Caolán McNamara 2020-09-06 18:02:48 UTC
Unfortunately

   GtkSalData::Yield
   gboolean call_userEventFn
   GtkSalData::TriggerUserEventProcessing
   GtkSalData::TriggerAllUserEventsProcessed
   GtkSalDisplay::TriggerUserEventProcessing
   GtkSalDisplay::TriggerAllUserEventsProcessed

is just the main loop processing events so all that shows is that there is a lot of events to process

Typically I'd debug that by running libreoffice then sshing in from another machine, attach gdb to it and sample backtraces by ctrl+c, bt and cont a few times to get a feel for what is getting called a lot. Debugging within the same machine is a pain with irrelevant redraw/mouse/keyboards events getting triggered by moving focus between the application and debugger
Comment 3 Tom 2020-09-06 19:55:30 UTC
Well, as the loop is concerned, I have noticed that only the first routine from that list responds to mouse/keyboard events.

   1. GtkSalData::Yield
   2. gboolean call_userEventFn
   3. GtkSalData::TriggerUserEventProcessing
   4. GtkSalData::TriggerAllUserEventsProcessed
   5. GtkSalDisplay::TriggerUserEventProcessing
   6. GtkSalDisplay::TriggerAllUserEventsProcessed

Unfortunately, I cannot offer to attach a second computer, but I have stopped and continued LO a couple of times per ddd/gdb and checked the whereabout after each stop. This is what I got (abbreviated repeating lines by "..."):

------

Thread 1 "soffice.bin" received signal SIGINT, Interrupt.
0x00007fffe866cbde in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
(gdb) where
#0  0x00007fffe866cbde in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#1  0x00007fffe866cec7 in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#2  0x00007fffe866d005 in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#3  0x00007fffe866d91f in FcFontSetMatch () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#4  0x00007ffff07c55d0 in psp::PrintFontManager::matchFont (this=0x14b9d60, rInfo=..., rLocale=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/fontmanager/fontconfig.cxx:1163
#5  0x00007fffe04e4615 in pango_to_vcl (font=0x1606a70, rLocale=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx:2968
#6  0x00007fffe04e43dc in getFont (pStyle=0x1393a80, rLocale=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx:2916
#7  0x00007fffe04e5756 in GtkSalGraphics::updateSettings (this=0x1603f20, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx:3213
#8  0x00007fffe05057ec in SalGraphics::UpdateSettings (this=0x1603f20, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/inc/salgdi.hxx:624
#9  0x00007fffe04fdac7 in GtkSalFrame::UpdateSettings (this=0x16019b0, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkframe.cxx:2266
#10 0x00007fffeff3ce7d in vcl::Window::ImplUpdateGlobalSettings (this=0x15f6740, rSettings=..., bCallHdl=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/settings.cxx:150
#11 0x00007ffff063c75d in Application::MergeSystemSettings (rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:617
#12 0x00007ffff011e2a0 in ImplHandleSalSettings (nEvent=SalEvent::SettingsChanged) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/winproc.cxx:2173
#13 0x00007ffff011f5b9 in ImplWindowFrameProc (_pWindow=0x15f6740, nEvent=SalEvent::SettingsChanged, pEvent=0x0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/winproc.cxx:2548
#14 0x00007ffff0791470 in SalFrame::CallCallback (this=0x16019b0, nEvent=SalEvent::SettingsChanged, pEvent=0x0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/inc/salframe.hxx:302
#15 0x00007ffff07ad887 in SalGenericDisplay::ProcessEvent (this=0x11a9350, aEvent=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/app/gendisp.cxx:66
#16 0x00007ffff05bb388 in SalUserEventList::DispatchUserEvents (this=0x11a9350, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/salusereventlist.cxx:110
#17 0x00007ffff07ad7ff in SalGenericDisplay::DispatchInternalEvent (this=0x11a9350, bHandleAllCurrentEvent=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/app/gendisp.cxx:51
#18 0x00007fffe0439a08 in call_userEventFn (data=0x505df0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:712
#19 0x00007fffe90e304a in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007fffe90e33f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007fffe90e349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007fffe0438991 in GtkSalData::Yield (this=0x505df0, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:385
#23 0x00007fffe043bfa8 in GtkInstance::DoYield (this=0x507c60, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkinst.cxx:387
#24 0x00007ffff063becb in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:455
#25 0x00007ffff063c3ed in Application::Yield () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:519
#26 0x00007ffff063bcb1 in Application::Execute () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:434
#27 0x00007ffff7c291f0 in (anonymous namespace)::Desktop::Main (this=0x7fffffffdfe0) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/app.cxx:1602
#28 0x00007ffff064dda5 in ImplSVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:200
#29 0x00007ffff064deca in SVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:232
#30 0x00007ffff7c7a92b in soffice_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/sofficemain.cxx:98
#31 0x0000000000400796 in sal_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:48
#32 0x000000000040077c in main (argc=1, argv=0x7fffffffe328) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:47

--------

Thread 1 "soffice.bin" received signal SIGINT, Interrupt.
0x00007ffff694dfc8 in __GI___pthread_rwlock_unlock (rwlock=0x43bb20) at pthread_rwlock_unlock.c:70
(gdb) where
#0  0x00007ffff694dfc8 in __GI___pthread_rwlock_unlock (rwlock=0x43bb20) at pthread_rwlock_unlock.c:70
#1  0x00007fffe93df0fe in g_type_check_value () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2  0x00007fffe93e1436 in g_value_unset () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3  0x00007fffe93d4d92 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4  0x00007fffe93d508f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5  0x00007fffdfb2ef88 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
...
#1469 0x00007fffdfb2f076 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#1470 0x00007fffdfc7873a in gtk_style_context_get_property () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#1471 0x00007fffdfc788c4 in gtk_style_context_get_valist () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#1472 0x00007fffdfc78b83 in gtk_style_context_get () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#1473 0x00007fffdfc7b34a in gtk_style_context_get_background_color () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#1474 0x00007fffe04e4e82 in GtkSalGraphics::updateSettings (this=0x1603f20, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx:3094
#1475 0x00007fffe05057ec in SalGraphics::UpdateSettings (this=0x1603f20, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/inc/salgdi.hxx:624
#1476 0x00007fffe04fdac7 in GtkSalFrame::UpdateSettings (this=0x16019b0, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkframe.cxx:2266
#1477 0x00007fffeff3ce7d in vcl::Window::ImplUpdateGlobalSettings (this=0x15f6740, rSettings=..., bCallHdl=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/settings.cxx:150
#1478 0x00007ffff063c75d in Application::MergeSystemSettings (rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:617
#1479 0x00007ffff011e2a0 in ImplHandleSalSettings (nEvent=SalEvent::SettingsChanged) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/winproc.cxx:2173
#1480 0x00007ffff011f5b9 in ImplWindowFrameProc (_pWindow=0x15f6740, nEvent=SalEvent::SettingsChanged, pEvent=0x0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/winproc.cxx:2548
#1481 0x00007ffff0791470 in SalFrame::CallCallback (this=0x16019b0, nEvent=SalEvent::SettingsChanged, pEvent=0x0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/inc/salframe.hxx:302
#1482 0x00007ffff07ad887 in SalGenericDisplay::ProcessEvent (this=0x11a9350, aEvent=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/app/gendisp.cxx:66
#1483 0x00007ffff05bb388 in SalUserEventList::DispatchUserEvents (this=0x11a9350, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/salusereventlist.cxx:110
#1484 0x00007ffff07ad7ff in SalGenericDisplay::DispatchInternalEvent (this=0x11a9350, bHandleAllCurrentEvent=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/app/gendisp.cxx:51
#1485 0x00007fffe0439a08 in call_userEventFn (data=0x505df0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:712
#1486 0x00007fffe90e304a in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1487 0x00007fffe90e33f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1488 0x00007fffe90e349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1489 0x00007fffe0438991 in GtkSalData::Yield (this=0x505df0, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:385
#1490 0x00007fffe043bfa8 in GtkInstance::DoYield (this=0x507c60, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkinst.cxx:387
#1491 0x00007ffff063becb in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:455
#1492 0x00007ffff063c3ed in Application::Yield () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:519
#1493 0x00007ffff063bcb1 in Application::Execute () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:434
#1494 0x00007ffff7c291f0 in (anonymous namespace)::Desktop::Main (this=0x7fffffffdfe0) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/app.cxx:1602
#1495 0x00007ffff064dda5 in ImplSVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:200
#1496 0x00007ffff064deca in SVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:232
#1497 0x00007ffff7c7a92b in soffice_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/sofficemain.cxx:98
#1498 0x0000000000400796 in sal_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:48
#1499 0x000000000040077c in main (argc=1, argv=0x7fffffffe328) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:47

-------

Thread 1 "soffice.bin" received signal SIGINT, Interrupt.
0x00007fffe90b9375 in g_pointer_bit_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) where
#0  0x00007fffe90b9375 in g_pointer_bit_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007fffe90c71ef in g_datalist_id_dup_data () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffdfb2fcf1 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
...
#3689 0x00007fffdfb2f076 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3690 0x00007fffdfc7873a in gtk_style_context_get_property () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3691 0x00007fffdfc788c4 in gtk_style_context_get_valist () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3692 0x00007fffdfc78b83 in gtk_style_context_get () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3693 0x00007fffdfc7b34a in gtk_style_context_get_background_color () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3694 0x00007fffe04e4e82 in GtkSalGraphics::updateSettings (this=0x1603f20, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx:3094
#3695 0x00007fffe05057ec in SalGraphics::UpdateSettings (this=0x1603f20, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/inc/salgdi.hxx:624
#3696 0x00007fffe04fdac7 in GtkSalFrame::UpdateSettings (this=0x16019b0, rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkframe.cxx:2266
#3697 0x00007fffeff3ce7d in vcl::Window::ImplUpdateGlobalSettings (this=0x15f6740, rSettings=..., bCallHdl=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/settings.cxx:150
#3698 0x00007ffff063c75d in Application::MergeSystemSettings (rSettings=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:617
#3699 0x00007ffff011e2a0 in ImplHandleSalSettings (nEvent=SalEvent::SettingsChanged) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/winproc.cxx:2173
#3700 0x00007ffff011f5b9 in ImplWindowFrameProc (_pWindow=0x15f6740, nEvent=SalEvent::SettingsChanged, pEvent=0x0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/window/winproc.cxx:2548
#3701 0x00007ffff0791470 in SalFrame::CallCallback (this=0x16019b0, nEvent=SalEvent::SettingsChanged, pEvent=0x0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/inc/salframe.hxx:302
#3702 0x00007ffff07ad887 in SalGenericDisplay::ProcessEvent (this=0x11a9350, aEvent=...) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/app/gendisp.cxx:66
#3703 0x00007ffff05bb388 in SalUserEventList::DispatchUserEvents (this=0x11a9350, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/salusereventlist.cxx:110
#3704 0x00007ffff07ad7ff in SalGenericDisplay::DispatchInternalEvent (this=0x11a9350, bHandleAllCurrentEvent=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/generic/app/gendisp.cxx:51
#3705 0x00007fffe0439a08 in call_userEventFn (data=0x505df0) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:712
#3706 0x00007fffe90e304a in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3707 0x00007fffe90e33f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3708 0x00007fffe90e349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3709 0x00007fffe0438991 in GtkSalData::Yield (this=0x505df0, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:385
#3710 0x00007fffe043bfa8 in GtkInstance::DoYield (this=0x507c60, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkinst.cxx:387
#3711 0x00007ffff063becb in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:455
#3712 0x00007ffff063c3ed in Application::Yield () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:519
#3713 0x00007ffff063bcb1 in Application::Execute () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:434
#3714 0x00007ffff7c291f0 in (anonymous namespace)::Desktop::Main (this=0x7fffffffdfe0) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/app.cxx:1602
#3715 0x00007ffff064dda5 in ImplSVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:200
#3716 0x00007ffff064deca in SVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:232
#3717 0x00007ffff7c7a92b in soffice_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/sofficemain.cxx:98
#3718 0x0000000000400796 in sal_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:48
#3719 0x000000000040077c in main (argc=1, argv=0x7fffffffe328) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:47

--------

Thread 1 "soffice.bin" received signal SIGINT, Interrupt.
0x00007fffdfd22194 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
(gdb) where
#0  0x00007fffdfd22194 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#1  0x00007fffdfb48005 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#2  0x00007fffdfc7a35d in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3  0x00007fffdfd24a70 in gtk_widget_style_get_valist () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#4  0x00007fffdfd24d64 in gtk_widget_style_get () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#5  0x00007fffdfc59d40 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
...
#27 0x00007fffdfd2114b in gtk_widget_send_expose () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#28 0x00007fffdfbd5052 in gtk_main_do_event () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#29 0x00007fffdf725d08 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#30 0x00007fffdf726e2c in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#31 0x00007fffdf726fe3 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#32 0x00007fffe93ba1d4 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#33 0x00007fffe93d49a6 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#34 0x00007fffe93d5555 in g_signal_emit_by_name () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#35 0x00007fffdf71ffc7 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#36 0x00007fffdf70f3c8 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#37 0x00007fffe90e3ab3 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#38 0x00007fffe90e304a in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#39 0x00007fffe90e33f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#40 0x00007fffe90e349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007fffe0438991 in GtkSalData::Yield (this=0x505df0, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkdata.cxx:385
#42 0x00007fffe043bfa8 in GtkInstance::DoYield (this=0x507c60, bWait=true, bHandleAllCurrentEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/unx/gtk3/gtk3gtkinst.cxx:387
#43 0x00007ffff063becb in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:455
#44 0x00007ffff063c3ed in Application::Yield () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:519
#45 0x00007ffff063bcb1 in Application::Execute () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svapp.cxx:434
#46 0x00007ffff7c291f0 in (anonymous namespace)::Desktop::Main (this=0x7fffffffdfe0) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/app.cxx:1602
#47 0x00007ffff064dda5 in ImplSVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:200
#48 0x00007ffff064deca in SVMain () at /home/tmp/tom/libreoffice-7.0.1.2/vcl/source/app/svmain.cxx:232
#49 0x00007ffff7c7a92b in soffice_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/sofficemain.cxx:98
#50 0x0000000000400796 in sal_main () at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:48
#51 0x000000000040077c in main (argc=1, argv=0x7fffffffe328) at /home/tmp/tom/libreoffice-7.0.1.2/desktop/source/app/main.c:47

------

Sorry, that's a lot of output code, but maybe it helps to narrow down the problem?

Regards
Tom
Comment 4 Caolán McNamara 2020-09-07 07:44:21 UTC
in vcl/unx/gtk3/gtk3gtkframe.cxx:GtkSalFrame::signalStyleUpdated try commenting out the...
GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, SalEvent::FontChanged );
line and see if that makes a difference.
Comment 5 Tom 2020-09-07 17:01:30 UTC
I have two news, a good one and a bad one.

First the bad news
------------------
I have done the following modification: Commented out 2nd "GtkSalFrame::getDisplay()->SendInternalEvent"

void GtkSalFrame::signalStyleUpdated(GtkWidget*, gpointer frame)
{
    GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);

    // note: settings changed for multiple frames is avoided in winproc.cxx ImplHandleSettings
    GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, SalEvent::SettingsChanged );

    // fire off font-changed when the system cairo font hints change
    GtkInstance *pInstance = static_cast<GtkInstance*>(GetSalData()->m_pInstance);
    const cairo_font_options_t* pLastCairoFontOptions = pInstance->GetLastSeenCairoFontOptions();
    const cairo_font_options_t* pCurrentCairoFontOptions = gdk_screen_get_font_options(gdk_screen_get_default());
    bool bFontSettingsChanged = true;
    if (pLastCairoFontOptions && pCurrentCairoFontOptions)
        bFontSettingsChanged = !cairo_font_options_equal(pLastCairoFontOptions, pCurrentCairoFontOptions);
    else if (!pLastCairoFontOptions && !pCurrentCairoFontOptions)
        bFontSettingsChanged = false;
    if (bFontSettingsChanged)
    {
        pInstance->ResetLastSeenCairoFontOptions(pCurrentCairoFontOptions);
/*        GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, SalEvent::FontChanged );*/
    }
}

Unfortunately, it did not help. I still see the same behavior as reported in my first post.


Now the good news
-----------------
With the following modification, the loop is broken and the cpu load has returned to reasonable values: Commented out 1st "GtkSalFrame::getDisplay()->SendInternalEvent"

void GtkSalFrame::signalStyleUpdated(GtkWidget*, gpointer frame)
{
    GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);

    // note: settings changed for multiple frames is avoided in winproc.cxx ImplHandleSettings
/*    GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, SalEvent::SettingsChanged ); */

    // fire off font-changed when the system cairo font hints change
    GtkInstance *pInstance = static_cast<GtkInstance*>(GetSalData()->m_pInstance);
    const cairo_font_options_t* pLastCairoFontOptions = pInstance->GetLastSeenCairoFontOptions();
    const cairo_font_options_t* pCurrentCairoFontOptions = gdk_screen_get_font_options(gdk_screen_get_default());
    bool bFontSettingsChanged = true;
    if (pLastCairoFontOptions && pCurrentCairoFontOptions)
        bFontSettingsChanged = !cairo_font_options_equal(pLastCairoFontOptions, pCurrentCairoFontOptions);
    else if (!pLastCairoFontOptions && !pCurrentCairoFontOptions)
        bFontSettingsChanged = false;
    if (bFontSettingsChanged)
    {
        pInstance->ResetLastSeenCairoFontOptions(pCurrentCairoFontOptions);
        GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, SalEvent::FontChanged );
    }
}

I played a little bit around with the menus and opened a new writer document afterwards to see, if there is any obvious side-effect. In my 2 minutes check, I did not find one.

What do you think? This change is probably too simple to both fix the issue and maintain the entire functionality of LO, isn't it?

Regards
Tom
Comment 6 Caolán McNamara 2020-09-07 18:27:30 UTC
It's progress to know its this function is the hotspot.

For me with Fedora 32 or 33; under X11 I get *one* signalStyleUpdated at program start and no others afterwards. While under wayland I get one on the app gaining focus and one on the app losing focus. We listen to this signal mostly so we can update the theme colors stuff if that changes (and the font list if new ones are added or removed) while we are running. You seem to be getting a lot of them and it would be interesting to know why. You would probably have to add the debugging packages for gtk3 itself and get some backtraces from signalStyleUpdated to see if its possible to see why that is so much noisier than my one.
Comment 7 Tom 2020-09-07 19:21:52 UTC
Thanks Caolán,

just to make sure that we are on the same page (because I already ran out of partition space when I compiled the 3 stages of gcc-7.5). You only suggest to install the package:

   libgtk-3-0-dbg
   GTK+ libraries and debugging symbols

Correct?

Regards
Tom
Comment 8 Caolán McNamara 2020-09-07 19:30:49 UTC
that sounds like the right package
Comment 9 Tom 2020-09-08 02:18:53 UTC
OK. I have installed it, but I am not sure how to proceed in order to use it.

What are the nexts steps?

In the meantime, I found the "Gtk+ inspector" and thought to give it a try. While running LO in the event loop, I checked the signals of the GtkWindow "LibreOfficeDev" and found the following 5 signals with simultaneous rapidly increasing counters (see also the attached screenshot)

   check-resize
   size-allocate
   style-set
   style-updated
   draw

Maybe this also helps to further narrow down the root cause of the event loop?

Regards
Tom
Comment 10 Tom 2020-09-08 02:19:57 UTC
Created attachment 165249 [details]
Screenshot of Gtk+Inspector results
Comment 11 Tom 2020-09-08 02:36:07 UTC
Created attachment 165250 [details]
Screenshot of GdkFrameClockIdle signals

Here is another screenshot taken for GdkFrameClockIdle signals, while runing LO in the event loop showing simultaneous rapidly increasing signal counters.

   before-paint
   update
   layout
   paint
   after-paint

Regards
Tom
Comment 12 Caolán McNamara 2020-09-08 07:54:17 UTC
what we want now is just some backtraces from GtkSalFrame::signalStyleUpdated to see if we can see why it is called so many times

so set a breakpoint in GtkSalFrame::signalStyleUpdated

break gtk3gtkframe.cxx:3336

and get some sample backtraces, ignoring the first few and looking at the later one and see where is gtk are they coming from. It might not turn up something, but hopefully we can see why is it so extraordinarily noisy on your setup
Comment 13 Tom 2020-09-08 18:12:54 UTC
OK.
- I did not re-built / re-compile LO.
- I added a breakdpoint ignoring 200 breaks to
  File: vcl/unx/gtk3/gtk3gtkframe.cxx
  Procedure: GtkSalFrame::signalStyleUpdated
  Line: 3300, see (BP)

  void GtkSalFrame::signalStyleUpdated(GtkWidget*, gpointer frame)
  {
    GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);

    // note: settings changed for multiple frames is avoided in winproc.cxx
       ImplHandleSettings
(BP)   GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, 
       SalEvent::SettingsChanged );

    // fire off font-changed when the system cairo font hints change

BTW, line 3336 in gtk3gtkframe.cxx of my source code is in procedure GtkSalFrame::signalWindowState. So, I added the breakpoint to line 3300, instead.

I ran a backtrace and got:

#0  GtkSalFrame::signalStyleUpdated (frame=0x16283f0) at vcl/unx/gtk3/gtk3gtkframe.cxx:3300
#1  0x00007fffe93b9fa5 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2  0x00007fffe93cbfc1 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3  0x00007fffe93d4d5c in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4  0x00007fffe93d508f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5  0x00007fffe93ba1d4 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6  0x00007fffe93d49a6 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7  0x00007fffe93d508f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8  0x00007fffdfc77f56 in gtk_style_context_do_invalidate (context=0x1420ec0, changes=0x18199f0) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkstylecontext.c:2415
#9  0x00007fffdfb48093 in gtk_css_widget_node_validate (node=0x149b430) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcsswidgetnode.c:132
#10 0x00007fffdfb2fabd in gtk_css_node_validate_internal (cssnode=0x149b430, timestamp=1283607254) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssnode.c:1284
#11 0x00007fffdfb1c466 in gtk_container_idle_sizer (clock=0x11a2740, container=0x1229350) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcontainer.c:2014
#12 0x00007fffe93ba1d4 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007fffe93d49a6 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007fffe93d5555 in g_signal_emit_by_name () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007fffdf71ff28 in gdk_frame_clock_paint_idle (data=0x11a2740) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gdk/gdkframeclockidle.c:408
#16 0x00007fffdf70f3c8 in gdk_threads_dispatch (data=0x12d70e0) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gdk/gdk.c:719
#17 0x00007fffe90e3ab3 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007fffe90e304a in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007fffe90e33f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007fffe90e349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007fffe0438991 in GtkSalData::Yield (this=0x5082a0, bWait=true, bHandleAllCurrentEvents=false) at vcl/unx/gtk3/gtk3gtkdata.cxx:385
#22 0x00007fffe043bfa8 in GtkInstance::DoYield (this=0x5079d0, bWait=true, bHandleAllCurrentEvents=false) at vcl/unx/gtk3/gtk3gtkinst.cxx:387
#23 0x00007ffff063becb in ImplYield (i_bWait=true, i_bAllEvents=false) at vcl/source/app/svapp.cxx:455
#24 0x00007ffff063c3ed in Application::Yield () at vcl/source/app/svapp.cxx:519
#25 0x00007ffff063bcb1 in Application::Execute () at vcl/source/app/svapp.cxx:434
#26 0x00007ffff7c291f0 in (anonymous namespace)::Desktop::Main (this=0x7fffffffdfc0) at desktop/source/app/app.cxx:1602
#27 0x00007ffff064dda5 in ImplSVMain () at vcl/source/app/svmain.cxx:200
#28 0x00007ffff064deca in SVMain () at vcl/source/app/svmain.cxx:232
#29 0x00007ffff7c7a92b in soffice_main () at desktop/source/app/sofficemain.cxx:98
#30 0x0000000000400796 in sal_main () at desktop/source/app/main.c:48
#31 0x000000000040077c in main (argc=1, argv=0x7fffffffe308) at desktop/source/app/main.c:47

I repeated the experiement and ran another backtrace. The result differed only as items #8 (changes=...) and #10 (timestamp=...) are concerned. Here they are:

#8  0x00007fffdfc77f56 in gtk_style_context_do_invalidate (context=0x1420ec0, changes=0x18199f0) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkstylecontext.c:2415
...
#10 0x00007fffdfb2fabd in gtk_css_node_validate_internal (cssnode=0x149b430, timestamp=1283607254) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssnode.c:1284

Regards
Tom
Comment 14 Tom 2020-09-08 18:16:36 UTC
Created attachment 165287 [details]
Screenshot of initial LO window w/o any user interaction

BTW: Is it intended that the "Recent Files" pull-down menu is per default marked (see screenshot), when the initial LO window is displayed?

Regards
Tom
Comment 15 Caolán McNamara 2020-09-08 18:37:10 UTC
The "recent files" toggled on is ok, the idea there (IIUC) is that the Recent Files and Templates are two toggle buttons, when one or other is depressed the start center is filled with icons of the matching category. You have no recently used files so you get the default empty backdrop.

wrt the backtrace

a) does it make a difference if you find the line with "style-updated" in it and replace m_pWindow with m_pFixedContainer or pEventWidget. Maybe we could listen to something else which is less noisy.

b) if you comment out the SendInternalEvent and replace it with a

static int foo;
fprintf(stderr, "hello world %d\n", foo++);

does it print hello worlds forever, or does it stop at some point? Maybe we could replace SendInternalEvent with a callback at idle time and batch together all the updates into a single SendInternalEvent
Comment 16 Tom 2020-09-08 19:58:44 UTC
ad a)

Replacing m_pWindow with m_pFixedContainer has a strong effect. The event loop is broken and I get only 10 of my "call_userEventFn" debug messages, if I do not interact per keyboard or mouse with LO.

Replacing m_pWindow with pEventWidget has the same strong effect.


ad b)

If I replace in GtkSalFrame::signalStyleUpdated

    GtkSalFrame::getDisplay()->SendInternalEvent( pThis, nullptr, 
    SalEvent::SettingsChanged );

by

    static int foo;
    fprintf(stderr, "hello world %d\n", foo++);

I get the behavior reported on 2020-09-07 17:01:30 UTC. Here is the total list of your and my debug messages printed, if I do not interact per keyboard or mouse with LO. The event loop is broken and GtkSalFrame::signalStyleUpdated is only called 3 times.

   hello world 0
   hello world 1
   call_userEventFn: 1
   call_userEventFn: 2
   call_userEventFn: 3
   call_userEventFn: 4
   hello world 2
   call_userEventFn: 5
   call_userEventFn: 6
   call_userEventFn: 7
   call_userEventFn: 8


As the event loop is concerned, all these changes fix the problem. Is there any possible side-effect that you may want me to check for either change?

Regards
Tom
Comment 17 Caolán McNamara 2020-09-09 08:00:14 UTC
(In reply to Tom from comment #16)
> ad a)
> 
> Replacing m_pWindow with m_pFixedContainer has a strong effect. The event
> loop is broken and I get only 10 of my "call_userEventFn" debug messages, if
> I do not interact per keyboard or mouse with LO.
> 
> Replacing m_pWindow with pEventWidget has the same strong effect.

In that case replacing m_pWindow with pEventWidget for listening to style-updated sounds like it is sufficient to fix this problem and retain the ability to listen to theming changes. You have done the ground work here do you want to submit a patch to make that change to solve this problem ? (https://wiki.documentfoundation.org/Development/gerrit/SubmitPatch)
Comment 18 Tom 2020-09-10 16:42:00 UTC
Created attachment 165376 [details]
Patch for vcl/unx/gtk3/gtk3gtkframe.cxx

Great and thanks coach Caolán for your guidance. I had a look at the patch submission instructions. To be honest, I have been pretty busy in preparing and executing the compilation of libreoffice-7.0.1.2 from the source code since last Friday in order to be able to find and fix the root cause of the high CPU load on my system. Since I also have a full-time job, I'd rather not submit the patch myself. Since you are perfectly familiar with this troubleshooting, I would appreciate, if you could submit the patch. I have attached the result of a diff of the original and the changed vcl/unx/gtk3/gtk3gtkframe.cxx and will also attach the entire changed vcl/unx/gtk3/gtk3gtkframe.cxx in a second comment.

Thanks & looking forward to libreoffice-7.0.2
Tom
Comment 19 Tom 2020-09-10 16:43:05 UTC
Created attachment 165377 [details]
Changed  vcl/unx/gtk3/gtk3gtkframe.cxx

The changed vcl/unx/gtk3/gtk3gtkframe.cxx

Regards
Tom
Comment 20 Commit Notification 2020-09-10 19:58:44 UTC
Caolán McNamara committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/ade900a09ee5486208b72f7d1b399b1c3c5785e8

tdf#136512 listen to style-updated on pEventWidget instead of toplevel...

It will be available in 7.1.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 21 Caolán McNamara 2020-09-11 07:46:33 UTC
so that should fix it then, backport to 7-0 proposed in gerrit
Comment 22 Tom 2020-09-12 14:45:21 UTC
I have downloaded and installed

master~2020-09-10_21.26.34_LibreOfficeDev_7.1.0.0.alpha0_Linux_x86-64_deb.tar.gz
master~2020-09-10_21.26.34_LibreOfficeDev_7.1.0.0.alpha0_Linux_x86-64_deb_helppack_en-US.tar.gz

started libreofficedev7.1, checked the CPU load of my system with "top" and got a very reasonable

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 5417 tom       20   0 1055228 133924  94328 S   0,0  3,6   0:01.28 soffice.bin

The fix looks good. Thanks.

Regards
Tom
Comment 23 Tom 2020-09-12 14:47:50 UTC
*** Bug 132134 has been marked as a duplicate of this bug. ***
Comment 24 Commit Notification 2020-09-15 07:57:02 UTC
Caolán McNamara committed a patch related to this issue.
It has been pushed to "libreoffice-7-0":

https://git.libreoffice.org/core/commit/363048be0a14b686da8110b96f28a55e25478a89

tdf#136512 listen to style-updated on pEventWidget instead of toplevel...

It will be available in 7.0.2.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 25 Tom 2020-09-17 17:07:25 UTC
I have downloaded and installed

libreoffice-7-0~2020-09-15_19.39.00_LibreOfficeDev_7.0.2.0.0_Linux_x86-64_deb.tar.gz
libreoffice-7-0~2020-09-15_19.39.00_LibreOfficeDev_7.0.2.0.0_Linux_x86-64_deb_helppack_en-US.tar.gz

started libreofficedev7.0, checked the CPU load of my system with "top" and got a very reasonable

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 6524 tom       20   0 1055252 132500  92416 S   0,0  3,6   0:01.20 soffice.bin

This fix looks good as well. Thanks.

Regards
Tom
Comment 26 Caolán McNamara 2020-09-17 18:54:48 UTC
sounds like a success then