Bug 48660 - Длительное зависание или вылет в файловом диалоге
Summary: Длительное зависание или вылет в файловом диалоге
Status: CLOSED WORKSFORME
Alias: None
Product: Branch p10
Classification: Unclassified
Component: libgtk+3 (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: qa-p10@altlinux.org
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-12-02 12:02 MSK by Vitaly Lipatov
Modified: 2023-12-30 15:19 MSK (History)
2 users (show)

See Also:


Attachments
dconf file (31.90 KB, application/octet-stream)
2023-12-30 15:19 MSK, Vitaly Lipatov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2023-12-02 12:02:57 MSK
Замечено на keepassxc-2.7.5-alt1.x86_64

При открытии файлового диалога (или даже при изменении размера окна) интерфейс зависает.
Подключение по strace показывает бесконечное
mremap(0x7f0c8929b000, 1926647808, 1926651904, MREMAP_MAYMOVE) = 0x7f0b95296000
mremap(0x7f0b95296000, 1926651904, 1926656000, MREMAP_MAYMOVE) = 0x7f0c89299000
mremap(0x7f0c89299000, 1926656000, 1926660096, MREMAP_MAYMOVE) = 0x7f0b95294000
mremap(0x7f0b95294000, 1926660096, 1926664192, MREMAP_MAYMOVE) = 0x7f0c89297000
mremap(0x7f0c89297000, 1926664192, 1926668288, MREMAP_MAYMOVE) = 0x7f0b95292000
mremap(0x7f0b95292000, 1926668288, 1926672384, MREMAP_MAYMOVE) = 0x7f0c89295000
mremap(0x7f0c89295000, 1926672384, 1926676480, MREMAP_MAYMOVE) = 0x7f0b95290000
mremap(0x7f0b95290000, 1926676480, 1926680576, MREMAP_MAYMOVE) = 0x7f0c89293000
потом программа либо отвисает, либо падает с

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Comment 1 Vitaly Lipatov 2023-12-12 12:50:43 MSK
При использовании файлового диалога из telegram диалог зависает в момент выбора файла.

backtrace такой:

(gdb) bt
#0  __memmove_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:547
#1  0x000055f3645cba8d in realloc ()
#2  0x000055f36366e380 in ?? ()
#3  0x000055f3636840b0 in ?? ()
#4  0x000055f35eb3f1b4 in ?? ()
#5  0x000055f36379bfee in ?? ()
#6  0x000055f363ec7607 in ?? ()
#7  0x000055f36379e709 in ?? ()
#8  0x000055f36379f1b5 in ?? ()
#9  0x000055f36373009a in ?? ()
#10 0x000055f3630273c7 in ?? ()
#11 0x000055f35fbbed26 in ?? ()
#12 0x000055f35fbbfb81 in ?? ()
#13 0x000055f35fb995d0 in ?? ()
#14 0x000055f3635ce1a2 in ?? ()
#15 0x000055f3635ce659 in ?? ()
#16 0x000055f363775fc9 in ?? ()
#17 0x00007f1148fdb6bb in g_main_dispatch (context=0x7ee748893750) at ../glib/gmain.c:3337
#18 g_main_context_dispatch (context=0x7ee748893750) at ../glib/gmain.c:4055
#19 0x00007f1148fdb968 in g_main_context_iterate (context=context@entry=0x7ee748893750, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4131
#20 0x00007f1148fdba1f in g_main_context_iteration (context=0x7ee748893750, may_block=1) at ../glib/gmain.c:4196
Comment 2 Vitaly Lipatov 2023-12-12 12:54:27 MSK
(Ответ для Vitaly Lipatov на комментарий #0)
> Замечено на keepassxc-2.7.5-alt1.x86_64
> 
> При открытии файлового диалога (или даже при изменении размера окна)
> интерфейс зависает.
> Подключение по strace показывает бесконечное
> mremap(0x7f0c8929b000, 1926647808, 1926651904, MREMAP_MAYMOVE) =
> 0x7f0b95296000
> mremap(0x7f0b95296000, 1926651904, 1926656000, MREMAP_MAYMOVE) =
> 0x7f0c89299000
> mremap(0x7f0c89299000, 1926656000, 1926660096, MREMAP_MAYMOVE) =
> 0x7f0b95294000
> mremap(0x7f0b95294000, 1926660096, 1926664192, MREMAP_MAYMOVE) =
> 0x7f0c89297000
> mremap(0x7f0c89297000, 1926664192, 1926668288, MREMAP_MAYMOVE) =
> 0x7f0b95292000
> mremap(0x7f0b95292000, 1926668288, 1926672384, MREMAP_MAYMOVE) =
> 0x7f0c89295000
> mremap(0x7f0c89295000, 1926672384, 1926676480, MREMAP_MAYMOVE) =
> 0x7f0b95290000
> mremap(0x7f0b95290000, 1926676480, 1926680576, MREMAP_MAYMOVE) =
> 0x7f0c89293000
> потом программа либо отвисает, либо падает с
> 
> terminate called after throwing an instance of 'std::bad_alloc'
>   what():  std::bad_alloc


При длительном зависании гуляет так:
(gdb) bt
#0  0x00007f189bbe427a in mremap () at ../sysdeps/unix/syscall-template.S:117
#1  0x00007f189bb6900e in mremap_chunk (p=p@entry=0x7f16cfa8e000, new_size=1146548224, new_size@entry=1146544128) at malloc.c:2882
#2  0x00007f189bb6deb0 in __GI___libc_realloc (oldmem=oldmem@entry=0x7f16cfa8e010, bytes=1146544106) at malloc.c:3226
#3  0x00007f189c2f55fc in reallocateData (options=1, allocSize=<optimized out>, header=0x7f16cfa8e010) at tools/qarraydata.cpp:183
#4  QArrayData::reallocateUnaligned (data=0x7f16cfa8e010, objectSize=objectSize@entry=1, capacity=1146544082, options=...) at tools/qarraydata.cpp:246
#5  0x00007f189c340572 in QTypedArrayData<char>::reallocateUnaligned (options=..., capacity=1146544082, data=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qarraydata.h:229
#6  QByteArray::reallocData (this=this@entry=0x7ffc09cb93a8, alloc=1146544082, options=..., options@entry=...) at text/qbytearray.cpp:1846
#7  0x00007f189c4477b2 in QByteArray::reserve (asize=1146544081, this=0x7ffc09cb93a8) at ../../include/QtCore/../../src/corelib/text/qbytearray.h:533
#8  QtStringBuilder::appendToByteArray<char [3], QByteArray> (a=..., b=...) at ../../include/QtCore/../../src/corelib/text/qstringbuilder.h:457
#9  0x00007f189c449f2c in operator+=<char [3], QByteArray> (b=..., a=...) at ../../include/QtCore/../../src/corelib/text/qstringbuilder.h:474
#10 QSettingsPrivate::iniEscapedString (str=..., result=..., codec=<optimized out>) at io/qsettings.cpp:678
#11 0x00007f189c451f06 in QSettingsPrivate::iniEscapedStringList (codec=<optimized out>, result=..., strs=...) at io/qsettings.cpp:723
#12 QSettingsPrivate::iniEscapedStringList (codec=0x0, result=..., strs=...) at io/qsettings.cpp:707
#13 QConfFileSettingsPrivate::writeIniFile (this=<optimized out>, device=..., map=...) at io/qsettings.cpp:1896
#14 0x00007f189c452c9a in QConfFileSettingsPrivate::syncConfFile (this=0x5637de1a1500, confFile=0x5637ddf17770) at io/qsettings.cpp:1516
#15 0x00007f189c4534db in QConfFileSettingsPrivate::sync (this=0x5637de1a1500) at io/qsettings.cpp:1368
#16 0x00007f189c447725 in QConfFileSettingsPrivate::flush (this=<optimized out>) at io/qsettings.cpp:1374
#17 QSettings::~QSettings (this=0x7ffc09cb9580, __in_chrg=<optimized out>) at io/qsettings.cpp:2767
#18 0x00007f189d9adea7 in QFileDialogPrivate::saveSettings (this=<optimized out>) at dialogs/qfiledialog.cpp:2937
#19 0x00007f189d9ae0c5 in QFileDialog::~QFileDialog (this=0x7ffc09cb9660, __in_chrg=<optimized out>) at dialogs/qfiledialog.cpp:407
#20 0x00007f189d9b10da in QFileDialog::getOpenFileUrl (parent=parent@entry=0x5637dd486a80, caption=..., dir=..., filter=..., selectedFilter=selectedFilter@entry=0x0, options=..., supportedSchemes=...)
    at dialogs/qfiledialog.cpp:2269
#21 0x00007f189d9b1372 in QFileDialog::getOpenFileName (parent=0x5637dd486a80, caption=..., dir=..., filter=..., selectedFilter=0x0, options=...) at dialogs/qfiledialog.cpp:2220
#22 0x00005637db8900fb in ?? ()
Comment 3 Yuri N. Sedunov 2023-12-12 12:59:09 MSK
Как вы испортили себе gtk3 в p10 я разбираться не собираюсь.
Comment 4 Vitaly Lipatov 2023-12-13 04:08:44 MSK
(Ответ для Yuri N. Sedunov на комментарий #3)
> Как вы испортили себе gtk3 в p10 я разбираться не собираюсь.
Юрий, а почему, я чем-то заслужил это не, или p10 вам не интересна?

$ rpm -V libgtk+3
$ rpm -q libgtk+3
libgtk+3-3.24.32-alt1.x86_64

Буду признателен за идеи. Судя по всему, новая система не поможет? Попробую другого пользователя.
Comment 5 Pivkin Denis 2023-12-20 17:58:05 MSK
По указанной информации ошибка не воспроизвелась. Пожалуйста, предоставьте более подробные шаги для воспроизведения ошибки
Comment 6 Vitaly Lipatov 2023-12-30 15:19:49 MSK
Created attachment 15315 [details]
dconf file

Прикладываю файл
~/.config/dconf/user
с которым проблема воспроизводится.