Bug 56109 - SIGSEGV thunderbird при инициализации новых разговоров IRC в `libxul.so!js::JSONTokenizer<_>::getTextPosition(unsigned int*, unsigned int*)` [JSONParser.cpp : 68] `cmp byte [rax + rcx * 1], 0x0`
Summary: SIGSEGV thunderbird при инициализации новых разговоров IRC в `libxul.so!js::J...
Status: CLOSED WORKSFORME
Alias: None
Product: Sisyphus
Classification: Development
Component: thunderbird (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Ajrat Makhmutov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-09-23 13:57 MSK by Artem Varaksa
Modified: 2025-12-24 15:03 MSK (History)
4 users (show)

See Also:


Attachments
p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917 (125.85 KB, application/x-xz)
2025-09-23 13:57 MSK, Artem Varaksa
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2025-09-23 13:57:50 MSK
Created attachment 19612 [details]
p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917

Условия
=======

Необходимы 2 учётные записи IRC в Thunderbird на двух компьютерах, желательно которые ранее не обменивались сообщениями друг с другом по IRC.

С разными никами, принадлежащими одной учётной записи, падения не было замечено.

Желательно, чтобы хотя бы один из компьютеров был реальным, а не виртуальной машиной. Падение наблюдалось при проверке реальная+реальная и виртуальная+реальная (причём падает thunderbird на той, к которой инициализировали разговор, вне зависимости от того, реальная она или виртуальная).

Воспроизводилось с различными реальными ноутбуками с ALT Workstation 11.1 / Workstation K 11.0 x86_64.

В комбинации виртуальная+виртуальная падение на данный момент замечено не было.


Шаги
====

1. На двух машинах в Thunderbird во вкладке чат добавить разные учётные записи IRC, подключиться.
2. На одной из машин нажать "Добавить собеседника" > ввести ник пользователя на другой машине > ОК.
3. У появившейся в разделе "Подключённые контакты" строки с именем другого пользователя нажать значок "Начать разговор".
4. Отправить любое сообщение.


Фактический результат
=====================

Thunderbird падает на принимающей сообщение машине.

Coredump нет, т. к. crash handler thunderbird ловит это падение (и показывает диалог), но есть minidump (см. ниже).


Ожидаемый результат
===================

Thunderbird не должен падать.


Дополнительно
=============

В приложенном архиве minidump с p11 (падение на виртуальной машине, к которой инициализировала разговор реальная) и результаты его анализа с помощью https://crates.io/crates/minidump-stackwalk.

> p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.dmp:                 Mini DuMP crash report, 14 streams, Tue Sep 23 09:55:28 2025, 0 type
> p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.extra:               JSON text data
> p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.txt:                 Unicode text, UTF-8 text, with very long lines (4964)

> p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.stackwalk.txt:       Unicode text, UTF-8 text, with very long lines (846)
> p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.stackwalk.brief.txt: ASCII text
> p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.stackwalk.json:      JSON text data


> # minidump-stackwalk p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.dmp --evil-json p11.4056a595-7c1f-f0ab-1cc1-cc4c58b69917.extra --symbols-url https://symbols.mozilla.org/ --use-local-debuginfo --brief
>
> Operating system: Linux
>                   6.12.48-6.12-alt1 #1 SMP PREEMPT_DYNAMIC Fri Sep 19 18:24:15 UTC 2025
> CPU: amd64
>      family 15 model 6 stepping 1
>      4 CPUs
> Linux altlinux 11.1 -  (ALT Workstation 11.1 (Prometheus))
>
> Crash reason:  SIGSEGV / SI_KERNEL
> Crash address: 0x0000000000000000 **
>     ** Non-canonical address detected: 0xd8a206ddd0000000
> Crashing instruction: `cmp byte [rax + rcx * 1], 0x0`
> Memory accessed by instruction:
>   0. Address: 0xd8a206ddd0000000
>      Size: 1
>      Access type: Read
> No instruction pointer update by instruction
> Process uptime: not available
>
> Linux memory map count: 2026
>
> Thread 0 thunderbird-bin (crashed) - tid: 3834
>  0  libxul.so!js::JSONTokenizer<unsigned char, js::JSONPerHandlerParser<unsigned char, DelegateHandler<unsigned char> > >::getTextPosition(unsigned int*, unsigned int*) [JSONParser.cpp : 68]
>     Found by: inlining
>  1  libxul.so!js::JSONPerHandlerParser<unsigned char, DelegateHandler<unsigned char> >::error(char const*) [JSONParser.cpp : 1063]
>     Found by: inlining
>  2  libxul.so!js::JSONTokenizer<unsigned char, js::JSONPerHandlerParser<unsigned char, DelegateHandler<unsigned char> > >::error(char const*) [JSONParser.cpp : 596]
>     Found by: inlining
>  3  libxul.so!js::JSONTokenizer<unsigned char, js::JSONPerHandlerParser<unsigned char, DelegateHandler<unsigned char> > >::readString<(js::JSONStringType)1>() [JSONParser.cpp : 385 + 0xa90]
>      rax = 0xd8a206ddd0000000    rdx = 0xffffffffffffffff
>      rcx = 0x0000000000000000    rbx = 0x00007f52f2535c00
>      rsi = 0x00007ffc08d2e198    rdi = 0x00007f52f2535c00
>      rbp = 0x000000000000001f    rsp = 0x00007ffc08d2e0a0
>       r8 = 0x93bed638d9906362     r9 = 0x0000000038000024
>      r10 = 0x00007f52ffe93e38    r11 = 0x0000392fb7873cb8
>      r12 = 0x000022ec83bbc0d8    r13 = 0xfffffffffffffffb
>      r14 = 0x00007ffc08d2e190    r15 = 0x00007f52f2535c00
>      rip = 0x00007f5305c3e570
>     Found by: given as instruction pointer in context
>  4  0x7f52f255c4ff
>      rbx = 0x00007f52f2535c00    rbp = 0x00007ffc08d2e1a8
>      rsp = 0x00007ffc08d2e180    r12 = 0x000022ec83bbc0d8
>      r13 = 0xfffffffffffffffb    r14 = 0x00007ffc08d2e190
>      r15 = 0x00007f52f2535c00    rip = 0x00007f52f255c500
>     Found by: call frame info
>  5  0x69a5787106
>      rbp = 0x00007ffc08d2e220    rsp = 0x00007ffc08d2e1b8
>      rip = 0x00000069a5787107
>     Found by: previous frame's frame pointer
>  6  0x69a56a14e5
>      rbp = 0x00007ffc08d2e280    rsp = 0x00007ffc08d2e230
>      rip = 0x00000069a56a14e6
>     Found by: previous frame's frame pointer
>  7  libxul.so!mozilla::Vector<unsigned char, (unsigned long)0, js::SystemAllocPolicy>::Vector(js::SystemAllocPolicy) [Vector.h : 946]
>     Found by: inlining
>  8  libxul.so!mozilla::Vector<unsigned char, (unsigned long)0, js::SystemAllocPolicy>::Vector() [Vector.h : 543]
>     Found by: inlining
>  9  libxul.so!js::wasm::ShareableVector<unsigned char, (unsigned long)0, js::SystemAllocPolicy>::ShareableVector() [WasmShareable.h : 80]
>     Found by: inlining
> 10  libxul.so!js_new<js::wasm::ShareableVector<unsigned char, (unsigned long)0, js::SystemAllocPolicy>, >(&&) [Utility.h : 546]
>     Found by: inlining
> 11  libxul.so!js::wasm::ModuleGenerator::finishModule(js::wasm::BytecodeBufferOrSource const&, js::wasm::ModuleMetadata&, JS::OptimizedEncodingListener*) [WasmGenerator.cpp : 1284 + 0x4a8]
>      rbp = 0x00007ffc08d2e430    rsp = 0x00007ffc08d2e290
>      rip = 0x00007f5306462e09
>     Found by: previous frame's frame pointer
> 12  0x7f52c8d8322f
>      rbp = 0xd9f2abb9b68a2900    rsp = 0x00007ffc08d2e720
>      rip = 0x00007f52c8d83230
>     Found by: call frame info
> 13  libxul.so!AddOrChangeProperty<(IsAddOrChange)1>(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::PropertyKey>, JS::Handle<JS::PropertyDescriptor>, js::PropertyResult*) [NativeObject.cpp : 1336]
>     Found by: inlining
> 14  libxul.so!js::NativeDefineProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::PropertyKey>, JS::Handle<JS::PropertyDescriptor>, JS::ObjectOpResult&) [NativeObject.cpp : 1827 + 0x1301]
>      rbp = 0xd9f2abb9b68a2900    rsp = 0x00007ffc08d2e750
>      rip = 0x00007f5305c8cf92
>     Found by: stack scanning


Воспроизводимость
=================

Воспроизводится на виртуальных машинах (в совокупности с реальной на p11, см. условия):

[sisyphus] ALT Workstation 11.1 x86_64
thunderbird-143.0-alt1.x86_64

[p11] ALT Workstation 11.1 x86_64
thunderbird-141.0-alt1.x86_64


Воспроизводится на реальных машинах (в совокупности с виртуальными или реальными, см. условия):

[p11] ALT Workstation 11.1 x86_64
thunderbird-141.0-alt1.x86_64
Comment 1 Anton Farygin 2025-09-23 14:02:42 MSK
Может быть вообще IRC отключить в thunderbird ?
Comment 2 Блинов Денис Вячеславович 2025-11-05 17:46:07 MSK
Воспроизводится: thunderbird-144.0.1-alt1
Comment 3 Божченко Павел Александрович 2025-12-24 15:03:38 MSK
Ошибка не воспроизвелась при отправке сообщения из клиента версии thunderbird-146.0.1-alt1.x86_64 (виртуальная машина) на клиенты версии thunderbird-145.0-alt1 (реальная машина) thunderbird-146.0.1-alt1 (виртуальная машина) используя ники разных учётных записей