Bug 10044 - Sylph-claws dumps core when editing displayed headers
: Sylph-claws dumps core when editing displayed headers
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/claws-mail)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2006-09-26 19:52 by
Modified: 2009-07-10 23:46 (History)


Attachments
local fix. probably incorrect ? (379 bytes, patch)
2009-07-08 15:48, algor
no flags Details | Diff
патч, похожий на корректный. (1.00 KB, patch)
2009-07-08 16:04, algor
no flags Details | Diff
claws-mail-alt-display-header.patch (2.97 KB, patch)
2009-07-09 20:53, Mikhail Efremov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2006-09-26 19:52:28
Steps to Reproduce:
1. ставим sylpheed-claws=2.3.1.cvs20-alt1.и запускаем.
2. Идем в Configuration -> Preferences... -> Message View -> Text Options.
3. Нажимаем Edit...
4. Выбираем поле Organization, удаляем, нажимаем OK.
5. Нажимаем Edit...
6. Хватаем поле From, тащим его куда-нибудь, потом возвращаем на место.
7. Нажимаем Cancel.
Actual Results:  
*** glibc detected *** free(): invalid pointer: 0x0829f7c0 ***
Aborted

Expected Results:  
Чтобы не падало.
(Воспроизводится на двух машинах.)
------- Comment #1 From 2007-01-02 18:43:42 -------
Воспроизводится на claws-mail 2.6.1.cvs37-alt1.
------- Comment #2 From 2007-10-16 14:35:42 -------
Воспроизводится на claws-mail-3.0.2cvs57. Апстрим-то знает?
------- Comment #3 From 2007-10-16 18:09:56 -------
неа. я и сам то забыл, честно говоря. хотя собирался починить ещё в стародавние
времена. руки дойдут, сделаю.
------- Comment #4 From 2009-07-08 12:06:51 -------
По-прежнему воспроизводится на claws-mail-3.7.1-alt1...
------- Comment #5 From 2009-07-08 15:48:32 -------
Created an attachment (id=3646) [details]
local fix. probably incorrect ?

локально у себя я лично решил эту проблему таким образом. с ходу не соображу
насколько это корректно, правда.
------- Comment #6 From 2009-07-08 15:56:59 -------
хотя, наверное, было бы правильнее в случае нажатия ESC или кнопки cancel
вызывать 

static void prefs_display_header_cancel(void)
{
        gtk_widget_hide(dispheader.window);
}

а в случае вызова prefs_display_header_deleted, звать 

static void prefs_display_header_delete(void)
{
        prefs_display_header_read_config();
        gtk_widget_hide(dispheader.window);
}

хмхм. в общем сейчас попробую сделать ещё патч.
------- Comment #7 From 2009-07-08 16:04:43 -------
Created an attachment (id=3647) [details]
патч, похожий на корректный.
------- Comment #8 From 2009-07-08 17:42:44 -------
Фиксить надо причину, а не следствие и не в этом месте.
Я немного посмотрел код.
Там проблема в том, что при перетаскивании и возврате на месте поля в список
prefs_common.disphdr_list вставляется тот же указатель еще раз. Соответсвенно
при повторном вызове display_header_prop_free() на тот же адрес имеем segfault.
Нужно не допустить вставки в лист того же самого значения. Точнее там похоже не
удаляется указатель из списка при... эээ... начале перетаскивания. Надо
поглубже посмотреть код. Может чуть позже дойдут руки, и сделаю патч.
------- Comment #9 From 2009-07-09 00:26:11 -------
(В ответ на комментарий №8)
> Может чуть позже дойдут руки, и сделаю патч.
Спасибо заранее. Патч обещаю протолкнуть в апстрим.
------- Comment #10 From 2009-07-09 20:53:40 -------
Created an attachment (id=3658) [details]
claws-mail-alt-display-header.patch

Выкинул обработчик сигнала row_changed, вместо этого все действия происходят по
сигналу drag_end: один черт row_changed посылается даже если порядок элементов
списка не изменился. Проблема возникала как раз в нем: при обходе списка с
помощью gtk_tree_model_iter_nth_child() (кстати там можно
gtk_tree_model_foreach() использовать, ну да ладно) один и тот же адрес
возвращается дважды.
Видимо во время этого сигнала существует некое промежуточное состояние -
элемент на новое место уже добавился, а со старого еще не удалился.
Является ли это нормальным поведением или это баг в GTK - без понятия. Во
всяком случае на такое поведение апстрим claws'a явно не расчитывал.
------- Comment #11 From 2009-07-09 23:48:32 -------
Попробовал с патчем, вроде исправилось, пошёл толкать в апстрим:
http://www.thewildbeast.co.uk/claws-mail/bugzilla/show_bug.cgi?id=1951
------- Comment #12 From 2009-07-10 12:13:40 -------
Апстрим принял патч, правда, лавры в ChangeLog'е достались мне %-\ У нас оно
тоже скоро будет, как только пройдёт shared task 9163.
------- Comment #13 From 2009-07-10 23:46:32 -------
Ловите 3.7.2-alt1