On 20.02.2017 22:37, denisgolovan via Lazarus wrote:
Hi all
Recently, I've started experiencing rather nasty bug - my GUI application
started freezing when scrolling VirtualTreeView component vertically using
scrollbar.
VTV itself is rather old version (last commit from May 17 2015). FPC and
Lazarus are from trunk, svn rev.35396 and rev.54204.
I am under Gentoo x64, gtk2 widgetset, gtk+ library v2.24.31-r1.
When paused after freezing, callstack always shows the following stack trace.
So I assume there is some infinite loop running.
#0 poll at :0
#1 ?? at :0
#2 ?? at :0
#3 xcb_wait_for_reply at :0
#4 _XReply at :0
#5 XGetGeometry at :0
#6 gdk_window_get_frame_extents at :0
#7 gdk_window_get_root_origin at :0
#8 GETWIDGETRELATIVEPOSITION(0x7fffed8cc490, 0, 0) at gtk2/gtk2proc.inc:7001
#9 SENDSIZENOTIFICATIONTOLCL(0x7fffed8cc490) at gtk2/gtk2proc.inc:6530
#10 GTKSIZE_ALLOCATECB(0x7fffed8cc490, 0x7fffffffcd20, 0x7fffed90a040) at
gtk2/gtk2callback.inc:2530
#11 g_closure_invoke(0x7fffed93ac50, 0x0, 0x0, 2, 0x7fffffffcab0,
0x7fffffffcab0, 0x7fffffffca50, 0x7fffffffca50) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gclosure.c:804
#12 signal_emit_unlocked_R(0x7fffee036f40, 0x7fffee036f40, 0, 0,
0x7fffed8cc490, 0x7fffed8cc490, 0x0, 0x0, 0x7fffffffcab0, 0x7fffffffcab0) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gsignal.c:3629
#13 g_signal_emit_valist(<optimized out>, <optimized out>, <optimized out>,
0x7fffffffcc40, 0x7fffffffcc40) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gsignal.c:3385
#14 g_signal_emit(<optimized out>, <optimized out>, <optimized out>) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gsignal.c:3441
#15 gtk_widget_size_allocate at :0
#16 ?? at :0
#17 _g_closure_invoke_va(0x7fffed8c96a0, 0x7fffed8c96a0, 0x0, 0x0, 0x7fffed8cc490,
0x7fffed8cc490, 0x7fffffffd060, 0x7fffffffd060, <optimized out>, 0x0) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gclosure.c:867
#18 g_signal_emit_valist(0x7fffed8cc490, <optimized out>, 0, 0x7fffffffd060,
0x7fffffffd060) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gsignal.c:3294
#19 g_signal_emit(<optimized out>, <optimized out>, <optimized out>) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/gobject/gsignal.c:3441
#20 ?? at :0
#21 ?? at :0
#22 g_main_dispatch(0x7fffee0442c0) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/glib/gmain.c:3154
#23 g_main_context_dispatch(0x7fffee0442c0, 0x7fffee0442c0) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/glib/gmain.c:3769
#24 g_main_context_iterate(0x7fffee0442c0, 0x7fffee0442c0, 0, 0, 1, 1, <optimized
out>) at /var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/glib/gmain.c:3840
#25 g_main_context_iteration(0x7fffee0442c0, 0) at
/var/tmp/paludis/dev-libs-glib-2.48.2/work/glib-2.48.2/glib/gmain.c:3901
#26 APPPROCESSMESSAGES(0x7fffee1b6040) at gtk2/gtk2widgetset.inc:2328
#27 HANDLEMESSAGE(0x7fffee079540) at include/application.inc:1274
#28 RUNLOOP(0x7fffee079540) at include/application.inc:1411
#29 APPRUN(0x7fffee1b6040, {Proc = {procedure (POINTER)} 0x7fffffffd430, Self =
0x7fffee079540}) at include/interfacebase.inc:54
#30 RUN(0x7fffee079540) at include/application.inc:1399
Any hints on how to resolve?
Can you try attached unit source file? You need to add in your main
program sources before any LCL units and after cthreads/cmem units.
unit unix_init_xlib;
{$mode objfpc}{$H+}
interface
implementation
uses
xlib;
Var
AStatus : TStatus;
initialization
AStatus := XInitThreads;
AStatus := AStatus;
finalization
end.
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus-ide.org
http://lists.lazarus-ide.org/listinfo/lazarus