I've recently installed Ubuntu 20.04 64bit and I've encountered problem that every GTK2 app started 25s. I reported it on launchpad (
https://bugs.launchpad.net/ubuntu/+bug/1891245) and eventually was able to resolve it by installing appmenu-gtk2-module, restarting and then running /usr/libexec/gsd-xsettings
This works for other gtk2 apps, for example gmrun now starts instantly. However it did not fix lazarus-made apps. I started new lazarus project, added button, compiled it and run. The blank window appears immediately, but it's content became visible only after 25s delay. This only happen in lightweight WMs like openbox.
Here is strace ./Project1
...
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 14
fcntl(14, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(14, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(14, {sa_family=AF_UNIX, sun_path="/run/user/1000/bus"}, 110) = 0
getpid() = 20113
geteuid() = 1000
getegid() = 1000
getpid() = 20113
geteuid() = 1000
getegid() = 1000
sendmsg(14, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0", iov_len=1}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=20113, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, MSG_NOSIGNAL) = 1
sendto(14, "AUTH\r\n", 6, MSG_NOSIGNAL, NULL, 0) = 6
recvfrom(14, "REJECTED EXTERNAL\r\n", 4096, 0, NULL, NULL) = 19
sendto(14, "AUTH EXTERNAL 31303030\r\n", 24, MSG_NOSIGNAL, NULL, 0) = 24
recvfrom(14, "OK d1e193bc144cb8f8d4f45a815f358"..., 4096, 0, NULL, NULL) = 37
sendto(14, "NEGOTIATE_UNIX_FD\r\n", 19, MSG_NOSIGNAL, NULL, 0) = 19
recvfrom(14, "AGREE_UNIX_FD\r\n", 4096, 0, NULL, NULL) = 15
sendto(14, "BEGIN\r\n", 7, MSG_NOSIGNAL, NULL, 0) = 7
write(17, "\1\0\0\0\0\0\0\0",
= 8
eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 16
write(16, "\1\0\0\0\0\0\0\0",
= 8
write(17, "\1\0\0\0\0\0\0\0",
= 8
poll([{fd=16, events=POLLIN}], 1, 25000) = 1 ([{fd=16, revents=POLLIN}])
read(16, "\1\0\0\0\0\0\0\0", 16) = 8
poll([{fd=16, events=POLLIN}], 1, 24998
... here is 25s delay
) = 0 (Timeout)
write(16, "\1\0\0\0\0\0\0\0",
= 8
futex(0x14bc790, FUTEX_WAKE_PRIVATE, 2147483647) = 0
close(16) = 0
write(17, "\1\0\0\0\0\0\0\0",
= 8
futex(0x7f602241df38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f602241df38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
statfs("/home/maly", {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=59255762, f_bfree=57029660, f_bavail=54002204, f_files=15122432, f_ffree=14859840, f_fsid={val=[2534916902, 735370733]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
futex(0x7f602241df38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f602241df38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
inotify_init1(IN_CLOEXEC) = 16
fcntl(16, F_GETFL) = 0 (flags O_RDONLY)
fcntl(16, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
write(15, "\1\0\0\0\0\0\0\0",
= 8
write(15, "\1\0\0\0\0\0\0\0",
= 8
futex(0x14b0020, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f602241df38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
inotify_add_watch(16, "/home/maly/.config/ibus/bus", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = 1
openat(AT_FDCWD, "/home/maly/.config/ibus/bus/0b994dfb915f499ba5a6a4702cf76e43-unix-0", O_RDONLY) = 18
fstat(18, {st_mode=S_IFREG|0664, st_size=379, ...}) = 0
read(18, "# This file is created by ibus-d"..., 4096) = 379
read(18, "", 4096) = 0
close(18) = 0
kill(13462, 0) = -1 ESRCH (No such process)
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f601df64000
mprotect(0x7f601df65000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x7f601e763cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[20119], tls=0x7f601e764700, child_tidptr=0x7f601e7649d0) = 20119
futex(0x1321ea0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f602241dd80, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f602241df38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f602247e2a0, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7f602247e2a0, FUTEX_WAKE_PRIVATE, 1) = 0
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLIN|POLLOUT}])
...
When I'm debugging the project the delay starts at Application.run; then it takes 25s inside this in gtk2widgetset.inc:
while g_main_context_pending(g_main_context_default) and (i>0) do
begin
if FGtkTerminated then
break;
if not g_main_context_iteration(g_main_context_default, False) then
break;
dec(i);
end;
Any idea how to fix this?