23.0rc4 crashes when trying to open the “Network Traffic” tab #582

issue vostrnad openend this issue on April 11, 2022
  1. vostrnad commented at 10:09 pm on April 11, 2022: none

    Expected behavior

    The app should not crash.

    Actual behavior

    The app immediately crashes when trying to open the “Network Traffic” tab. If I open the tab right after startup it doesn’t crash right away and everything looks fine, but then it crashes some 30 seconds later. Other tabs work fine.

    To reproduce

    1. Start bitcoin-qt.
    2. Go to Window > Network Traffic.

    System information

    23.0rc4 installed with bitcoin-23.0rc4-win64-setup.exe on Windows 10 over a previous installation of 22.0.0.

    These are the last lines of the debug log:

     02022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 12
     12022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 12
     22022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 12
     32022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 12
     42022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 14
     52022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 14
     62022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 14
     72022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 14
     82022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 11
     92022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 11
    102022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 11
    112022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 11
    122022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 32
    132022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 32
    142022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 32
    152022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 32
    162022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 19
    172022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 19
    182022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 19
    192022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 19
    202022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 20
    212022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 20
    222022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 20
    232022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 20
    242022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 16
    252022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 16
    262022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 16
    272022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 16
    282022-04-11T21:48:45Z GUI:   OpenType support missing for "MS Shell Dlg 2", script 17
    292022-04-11T21:48:45Z GUI:   OpenType support missing for "Arial", script 17
    302022-04-11T21:48:45Z GUI:   OpenType support missing for "MS UI Gothic", script 17
    312022-04-11T21:48:45Z GUI:   OpenType support missing for "SimSun", script 17
    
  2. vostrnad added the label Bug on Apr 11, 2022
  3. hebasto commented at 8:09 am on April 12, 2022: member

    @vostrnad Thank you for testing Bitcoin Core v23.0rc4.

    Can confirm the bug on Windows 11 Pro 21H2.

  4. hebasto commented at 9:53 am on April 12, 2022: member
    FWIW, no crashes with a MSVC build.
  5. hebasto commented at 10:56 am on April 12, 2022: member
    Also tested bitcoin-qt.exe cross-compiled with GCC 11.2.0 on Ubuntu 22.04 – no crashes.
  6. laanwj added the label Windows on Apr 12, 2022
  7. laanwj commented at 11:08 am on April 12, 2022: member
    It would be very useful to have a traceback, or at least a crash address (without ASLR, or including a memory map), we were able to narrow down the previous windows crash issue quite quickly using that information and addr2line.
  8. hebasto commented at 11:40 am on April 12, 2022: member

    Reproduced in wine:

      0Unhandled exception: 0xc0000029 in 64-bit code (0x000000007bc28318).
      1Register dump:
      2 rip:000000007bc28318 rsp:00000000003179d0 rbp:0000000000317c20 eflags:00000202 (   - --  I   - - - )
      3 rax:000000000000004d rbx:00000000003179f0 rcx:00000000003179f0 rdx:0000000000318670
      4 rsi:000000000031ad00 rdi:000000000031ad00  r8:0000000000000000  r9:00000000003176b4 r10:00000000003176b3
      5 r11:0000000000000293 r12:0000000000318670 r13:0000000000317b30 r14:000000000031fea0 r15:000000000031fea0
      6Stack dump:
      70x00000000003179d0:  00000000003179f0 000000007bc28981
      80x00000000003179e0:  0000000000730bf0 0000000000317b30
      90x00000000003179f0:  00000001c0000029 0000000000318670
     100x0000000000317a00:  000000007bc28318 0000000000000000
     110x0000000000317a10:  0000000000317b30 000000000031fea0
     120x0000000000317a20:  000000000031fea0 000000007bc53e36
     130x0000000000317a30:  0000000000000002 0000000140000000
     140x0000000000317a40:  0000000140060220 4071000000000000
     150x0000000000317a50:  0000000000317c20 0000000000317b68
     160x0000000000317a60:  0000000000317b48 0000000000000000
     170x0000000000317a70:  4071000000000000 0000000000011830
     180x0000000000317a80:  000000007bc63910 0000000000318670
     19Backtrace:
     20=>0 0x000000007bc28318 EntryPoint+0xffffffffffffffff() in ntdll (0x0000000000317c20)
     21  1 0x000000007bc5530f EntryPoint+0xffffffffffffffff() in ntdll (0x0000000000317c20)
     22  2 0x000000007bc5536f EntryPoint+0xffffffffffffffff() in ntdll (0x0000000000000000)
     23  3 0x00000001c8dc746a EntryPoint+0xfffb3569() in msvcrt (0x0000000000000000)
     24  4 0x000000014161fbee EntryPoint+0x10161e72d() in bitcoin-qt (0x0000000000000000)
     25  5 0x0000000141620672 EntryPoint+0x10161f1b1() in bitcoin-qt (0x0000000000000000)
     26  6 0x000000014161f438 EntryPoint+0x10161df77() in bitcoin-qt (0x0000000000318870)
     27  7 0x000000014161f045 EntryPoint+0x10161db84() in bitcoin-qt (0xaaaaaaaaaaaaaaab)
     28  8 0x0000000140fbe001 EntryPoint+0x100fbcb40() in bitcoin-qt (0x0000000141f898a0)
     29  9 0x0000000140e2de61 EntryPoint+0x100e2c9a0() in bitcoin-qt (0x0000000000000002)
     30  10 0x0000000140060220 EntryPoint+0x10005ed5f() in bitcoin-qt (0x0000000000000002)
     31  11 0x00000001411339c0 EntryPoint+0x1011324ff() in bitcoin-qt (0x000000000031b350)
     32  12 0x0000000140e6e0d1 EntryPoint+0x100e6cc10() in bitcoin-qt (0x000000000031b350)
     33  13 0x0000000140d48b80 EntryPoint+0x100d476bf() in bitcoin-qt (0x000000000031b350)
     34  14 0x0000000140cc63fb EntryPoint+0x100cc4f3a() in bitcoin-qt (0x000000000031b350)
     35  15 0x0000000140cceb3b EntryPoint+0x100ccd67a() in bitcoin-qt (0x0000000000000016)
     36  16 0x0000000140cc61f8 EntryPoint+0x100cc4d37() in bitcoin-qt (0x000000000031b620)
     37  17 0x0000000140cceb3b EntryPoint+0x100ccd67a() in bitcoin-qt (0x000000000000000d)
     38  18 0x0000000140cc61f8 EntryPoint+0x100cc4d37() in bitcoin-qt (0x000000000031b8f0)
     39  19 0x0000000140cceb3b EntryPoint+0x100ccd67a() in bitcoin-qt (0x000000000000000d)
     40  20 0x0000000140cc61f8 EntryPoint+0x100cc4d37() in bitcoin-qt (0x000000000031bbc0)
     41  21 0x0000000140cceb3b EntryPoint+0x100ccd67a() in bitcoin-qt (0x000000000000000b)
     42  22 0x0000000140cc61f8 EntryPoint+0x100cc4d37() in bitcoin-qt (0x000000000031be70)
     43  23 0x0000000140f2d47d EntryPoint+0x100f2bfbc() in bitcoin-qt (0x000000000031be60)
     44  24 0x000000014113420a EntryPoint+0x101132d49() in bitcoin-qt (0x00000000006ef234)
     45  25 0x0000000140e6e0d1 EntryPoint+0x100e6cc10() in bitcoin-qt (0x00000000006ef234)
     46  26 0x0000000140d4600a EntryPoint+0x100d44b49() in bitcoin-qt (0x00000000006ef234)
     47  27 0x0000000140f75559 EntryPoint+0x100f74098() in bitcoin-qt (0x00000000006ef234)
     48  28 0x0000000140fe00dd EntryPoint+0x100fdec1c() in bitcoin-qt (0x00000000006ef750)
     49  29 0x0000000140ef9f8f EntryPoint+0x100ef8ace() in bitcoin-qt (0x00000000006ef750)
     50  30 0x0000000140fe00c4 EntryPoint+0x100fdec03() in bitcoin-qt (0x0000000000000024)
     51  31 0x0000000140b225a3 EntryPoint+0x100b210e2() in bitcoin-qt (0x0000000000000024)
     52  32 0x0000000140d491e7 EntryPoint+0x100d47d26() in bitcoin-qt (0x000000000031f820)
     53  33 0x0000000140009e49 EntryPoint+0x100008988() in bitcoin-qt (0x000000000031f820)
     54  34 0x00000001400013c1 EntryPoint+0xffffff00() in bitcoin-qt (0x0000000000000002)
     55  35 0x00000001400014d6 EntryPoint+0x100000015() in bitcoin-qt (0x0000000000000000)
     56  36 0x000000007b62c6c9 EntryPoint+0xffffffffffffffff() in kernel32 (0x0000000000000000)
     57  37 0x000000007bc583c3 EntryPoint+0xffffffffffffffff() in ntdll (0x0000000000000000)
     580x000000007bc28318 EntryPoint+0xffffffffffffffff in ntdll: jmp	0x000000007bc28310 EntryPoint+0xffffffffffffffff
     59Modules:
     60Module	Address					Debug info	Name (40 modules)
     61PE	        7a850000-        7a854000	Deferred        opengl32
     62PE	        7b000000-        7b3fd000	Deferred        kernelbase
     63PE	        7b600000-        7b969000	Dwarf           kernel32
     64PE	        7bc00000-        7bf3c000	Dwarf           ntdll
     65PE	       140000000-       142206000	Export          bitcoin-qt
     66PE	       1c8b40000-       1c8bb7000	Deferred        msacm32
     67PE	       1c8db0000-       1c9097000	Dwarf           msvcrt
     68PE	       21a7e0000-       21a9ce000	Deferred        setupapi
     69PE	       231ae0000-       231d60000	Deferred        rpcrt4
     70PE	       23d820000-       23dfc2000	Deferred        user32
     71PE	       25d740000-       25d75f000	Deferred        dwmapi
     72PE	       26b4c0000-       26bbb9000	Deferred        gdi32
     73PE	       2739c0000-       273ec9000	Deferred        oleaut32
     74PE	       2967b0000-       296949000	Deferred        d3d9
     75PE	       2a4090000-       2a40bf000	Deferred        wtsapi32
     76PE	       2b8510000-       2b854e000	Deferred        wintab32
     77PE	       2bb750000-       2bbcd8000	Deferred        comctl32
     78PE	       2e3540000-       2e364f000	Deferred        shlwapi
     79PE	       2e8f10000-       2e948f000	Deferred        ole32
     80PE	       2f1fa0000-       2f1fbe000	Deferred        version
     81PE	       2f61f0000-       2f625d000	Deferred        explorerframe
     82PE	       2f7230000-       2f72d4000	Deferred        uxtheme
     83PE	       3126f0000-       312744000	Deferred        shcore
     84PE	       31f800000-       31fa8e000	Deferred        comdlg32
     85PE	       327020000-       3271a4000	Deferred        combase
     86PE	       32a700000-       32a7bc000	Deferred        sechost
     87PE	       330260000-       330387000	Deferred        advapi32
     88PE	       388e20000-       388e4b000	Deferred        userenv
     89PE	       3af670000-       3af9dd000	Deferred        ucrtbase
     90PE	       3afd00000-       3afd62000	Deferred        imm32
     91PE	       3b8f00000-       3b909f000	Deferred        winmm
     92PE	    7fc088060000-    7fc08806b000	Deferred        winspool
     93PE	    7fc0aa1f0000-    7fc0aa1f4000	Deferred        wined3d
     94PE	    7fc0aa4c0000-    7fc0aa4c3000	Deferred        dwrite
     95PE	    7fc0aa820000-    7fc0aa824000	Deferred        winex11
     96PE	    7fc0ab800000-    7fc0ac0d2000	Deferred        shell32
     97PE	    7fc0ac210000-    7fc0ac214000	Deferred        dnsapi
     98PE	    7fc0ac230000-    7fc0ac236000	Deferred        ws2_32
     99PE	    7fc0ac270000-    7fc0ac273000	Deferred        netapi32
    100PE	    7fc0ac3b0000-    7fc0ac3b4000	Deferred        iphlpapi
    101Threads:
    102process  tid      prio (all id:s are in hex)
    10300000038 services.exe
    104	0000003c    0
    105	00000040    0
    106	0000004c    0
    107	00000070    0
    108	0000008c    0
    109	000000bc    0
    110	000000d0    0
    11100000044 winedevice.exe
    112	00000048    0
    113	00000054    0
    114	00000058    0
    115	0000005c    0
    11600000060 explorer.exe
    117	00000064    0
    118	00000088    0
    119	00000098    0
    12000000068 plugplay.exe
    121	0000006c    0
    122	00000074    0
    123	00000078    0
    124	0000007c    0
    125	000000a0    0
    12600000080 winedevice.exe
    127	00000084    0
    128	00000090    0
    129	00000094    0
    130	0000009c    0
    131	000000ac    0
    132000000b4 svchost.exe
    133	000000b8    0
    134	000000c0    0
    135	000000c4    0
    136000000c8 rpcss.exe
    137	000000cc    0
    138	000000d4    0
    139	000000d8    0
    140	000000dc    0
    141	000000e0    0
    142	000000e4    0
    143000000ec (D) Z:\home\hebasto\Downloads\bitcoin-23.0rc4-win64\bitcoin-23.0rc4\bin\bitcoin-qt.exe
    144	000000f0    0 <==
    145	0000011c    0
    146	00000140    0
    147	00000144    0
    148	00000148    0
    149	0000014c    0
    150	00000150    0
    151	00000154    0
    152	00000158    0
    153	0000015c    0
    154	00000160    0
    155	00000164    0
    156	0000016c    0
    157	00000170    0
    158	00000178    0
    159	0000017c    0
    160	00000180    0
    161	00000184    0
    162	00000188    0
    163	0000018c    0
    164000000f4 conhost.exe
    165	000000f8    0
    166System information:
    167    Wine build: wine-6.0.3 (Ubuntu 6.0.3~repack-1)
    168    Platform: x86_64
    169    Version: Windows 7
    170    Host system: Linux
    171    Host version: 5.15.0-25-generic
    
  9. hebasto commented at 12:19 pm on April 12, 2022: member

    The last call in backtrace from bitcoin-qt:

    0$ addr2line -e bin/bitcoin-qt.exe.dbg --no-recurse-limit -aipfC 0x000000014161fbee
    10x000000014161fbee: ?? at nanosleep.c:?
    

    The last call in our code:

    0$ addr2line -e bin/bitcoin-qt.exe.dbg --no-recurse-limit -aipfC 0x0000000140060220
    10x0000000140060220: TrafficGraphWidget::paintEvent(QPaintEvent*) at /distsrc-base/distsrc-23.0rc4-x86_64-w64-mingw32/src/qt/trafficgraphwidget.cpp:109
    
  10. hebasto commented at 2:13 pm on April 12, 2022: member

    The last call in our code:

    0$ addr2line -e bin/bitcoin-qt.exe.dbg --no-recurse-limit -aipfC 0x0000000140060220
    10x0000000140060220: TrafficGraphWidget::paintEvent(QPaintEvent*) at /distsrc-base/distsrc-23.0rc4-x86_64-w64-mingw32/src/qt/trafficgraphwidget.cpp:109
    

    Hmm, just commenting out line 109 prevents crashing.

  11. laanwj commented at 2:16 pm on April 12, 2022: member

    It would be interesting to see what is in the QPainterPath object passed. Unless Qt provides a way to dump its contents, I would guess the easiest way to find out is to add logging to TrafficGraphWidget::paintPath.

    Best case we can find some minimal path that reproduces this issue and report it and/or find something obviously wrong on our side. Worst case it’s a valid path we can maybe work around the issue somehow.

  12. hebasto commented at 3:37 pm on April 12, 2022: member

    It would be interesting to see what is in the QPainterPath object passed. Unless Qt provides a way to dump its contents, I would guess the easiest way to find out is to add logging to TrafficGraphWidget::paintPath.

    Done. Nothing specific found. With added qDebug() << vSamplesIn; and qDebug() << p; I got for three crashes:

     02022-04-12T15:20:11Z GUI: (132.148, 111.234, 30.4196, 82.7631, 19.2302, 80.828, 30.6516, 13.1187, 65.236, 52.9836, 66.6244, 10.2147, 89.9018, 133.566, 20.4244)
     12022-04-12T15:20:11Z GUI: QPainterPath: Element count=17
     2 -> MoveTo(x=545, y=330)
     3 -> LineTo(x=545, y=14)
     4 -> LineTo(x=545, y=64)
     5 -> LineTo(x=544, y=258)
     6 -> LineTo(x=543, y=132)
     7 -> LineTo(x=543, y=284)
     8 -> LineTo(x=542, y=137)
     9 -> LineTo(x=541, y=257)
    10 -> LineTo(x=541, y=299)
    11 -> LineTo(x=540, y=174)
    12 -> LineTo(x=539, y=204)
    13 -> LineTo(x=539, y=171)
    14 -> LineTo(x=538, y=306)
    15 -> LineTo(x=537, y=115)
    16 -> LineTo(x=537, y=10)
    17 -> LineTo(x=536, y=282)
    18 -> LineTo(x=536, y=330)
    
     02022-04-12T15:24:52Z GUI: (90.6102, 51.9431, 83.3138, 19.7356, 76.9702, 24.3093, 15.636, 87.8804, 35.7747, 63.188, 41.2676, 133.879, 60.3027, 22.8809, 0, 0, 0)
     12022-04-12T15:24:52Z GUI: QPainterPath: Element count=17
     2 -> MoveTo(x=545, y=330)
     3 -> LineTo(x=545, y=114)
     4 -> LineTo(x=545, y=206)
     5 -> LineTo(x=544, y=131)
     6 -> LineTo(x=543, y=283)
     7 -> LineTo(x=543, y=147)
     8 -> LineTo(x=542, y=272)
     9 -> LineTo(x=541, y=293)
    10 -> LineTo(x=541, y=120)
    11 -> LineTo(x=540, y=245)
    12 -> LineTo(x=539, y=179)
    13 -> LineTo(x=539, y=232)
    14 -> LineTo(x=538, y=10)
    15 -> LineTo(x=537, y=186)
    16 -> LineTo(x=537, y=276)
    17 -> LineTo(x=536, y=330)
    18 -> LineTo(x=535, y=330)
    
     02022-04-12T15:29:35Z GUI: (28.3138, 16.3582, 168.981, 288.036, 65.1329, 119.463, 111.596, 47.3556, 68.9, 45.1036, 70.3858, 11.8667, 16.5391, 83.7804, 40.216, 72.2844, 73.6307, 96.524, 7)
     12022-04-12T15:29:35Z GUI: QPainterPath: Element count=21
     2 -> MoveTo(x=545, y=330)
     3 -> LineTo(x=545, y=299)
     4 -> LineTo(x=545, y=312)
     5 -> LineTo(x=544, y=143)
     6 -> LineTo(x=543, y=10)
     7 -> LineTo(x=543, y=258)
     8 -> LineTo(x=542, y=198)
     9 -> LineTo(x=541, y=207)
    10 -> LineTo(x=541, y=278)
    11 -> LineTo(x=540, y=254)
    12 -> LineTo(x=539, y=280)
    13 -> LineTo(x=539, y=252)
    14 -> LineTo(x=538, y=317)
    15 -> LineTo(x=537, y=312)
    16 -> LineTo(x=537, y=237)
    17 -> LineTo(x=536, y=286)
    18 -> LineTo(x=535, y=250)
    19 -> LineTo(x=535, y=249)
    20 -> LineTo(x=534, y=223)
    21 -> LineTo(x=533, y=250)
    22 -> LineTo(x=533, y=330)
    
  13. hebasto commented at 4:31 pm on April 12, 2022: member

    FWIW, this patch:

     0--- a/src/qt/trafficgraphwidget.cpp
     1+++ b/src/qt/trafficgraphwidget.cpp
     2@@ -103,18 +103,18 @@ void TrafficGraphWidget::paintEvent(QPaintEvent *)
     3     }
     4 
     5     painter.setRenderHint(QPainter::Antialiasing);
     6-    if(!vSamplesIn.empty()) {
     7+    if (!vSamplesIn.empty()) {
     8         QPainterPath p;
     9         paintPath(p, vSamplesIn);
    10-        painter.fillPath(p, QColor(0, 255, 0, 128));
    11         painter.setPen(Qt::green);
    12+        painter.setBrush(QColor(0, 255, 0, 128));
    13         painter.drawPath(p);
    14     }
    15-    if(!vSamplesOut.empty()) {
    16+    if (!vSamplesOut.empty()) {
    17         QPainterPath p;
    18         paintPath(p, vSamplesOut);
    19-        painter.fillPath(p, QColor(255, 0, 0, 128));
    20         painter.setPen(Qt::red);
    21+        painter.setBrush(QColor(255, 0, 0, 128));
    22         painter.drawPath(p);
    23     }
    24 }
    

    does not help.

  14. hebasto referenced this in commit 388709b9f4 on Apr 12, 2022
  15. hebasto commented at 7:55 pm on April 12, 2022: member
    A workaround suggested in bitcoin/bitcoin#24838.
  16. laanwj commented at 7:56 pm on April 12, 2022: member
    Does it maybe have to do with the transparency? What if you use a solid color?
  17. hebasto commented at 9:07 pm on April 12, 2022: member

    Does it maybe have to do with the transparency? What if you use a solid color?

    Verified. Solid colors do not help, unfortunately.

  18. laanwj commented at 8:07 am on April 13, 2022: member

    Thanks for checking. That would have been an easy workaround at least. Thinking of it, we could always go with not filling the graph at all on 23.0rc5. A line should be enough?

    Something that becomes apparent here is that we don’t generate Qt symbols in our debug information. All the Qt addresses end up in nanosleep which makes no sense. That’s probably the last library function that does get symbols.

     00x000000007bc28318 ?? ??:0 (unknown symbol in ntdll)
     10x000000007bc5530f ?? ??:0 (unknown symbol in ntdll)
     20x000000007bc5536f ?? ??:0 (unknown symbol in ntdll)
     30x00000001c8dc746a: ?? ??:0 (unknown symbol in msvcrt, looks like longjmp)
     40x000000014161fbee: ?? at gray_record_cell.part.0
     50x0000000141620672: ?? at gray_render_line
     60x000000014161f438: ?? at gray_convert_glyph_inner
     70x000000014161f045: ?? at gray_convert_glyph
     80x0000000140fbe001: ?? at QRasterPaintEnginePrivate::rasterize(QT_FT_Outline_*, void (*)(int, QT_FT_Span_ const*, void*), void*, QRasterBuffer*)
     90x0000000140e2de61: ?? at QRasterPaintEngine::fill(QVectorPath const&, QBrush const&)
    100x0000000140060220: TrafficGraphWidget::paintEvent(QPaintEvent*) at /distsrc-base/distsrc-23.0rc4-x86_64-w64-mingw32/src/qt/trafficgraphwidget.cpp:109
    

    Let’s look into getting qt symbols (well, line numbers) into our .dbg.

    Edit: Seems that objdump can see the Qt function names, but not line numbers. I’ve filled them in.

  19. laanwj commented at 8:36 am on April 13, 2022: member
    • gray_record_cell is inside freetype. Did we change version on that? (irrelevant, see below) From the assembly it looks like the crash happens while trying to unwind the stack with __imp_longjmp.
      • Also no clue why the stack unwind fails. This may actually be a GCC bug.
      • Going deeper: it seems Qt is not using our freetype at all, but its internal one in src/3rdparty/freetype. I noticed this because in Ft 2.11, the function gray_record_cell has been refactored away :smile:
    • I do not possibly understand why this line ends up in freetype. It’s rendering a path, not text ! Edit: might be anti-aliasing related. Edit.2: or is it using freetype for all path rendering on Windows?

    Edit: might want to try disabling anti-aliasing at the top of TrafficGraphWidget::paintEvent:

    0painter.setRenderHint(QPainter::Antialiasing, false);
    1painter.setRenderHint(QPainter::TextAntialiasing, false);
    2painter.setRenderHint(QPainter::SmoothPixmapTransform, false);
    
  20. fanquake commented at 8:39 am on April 13, 2022: member
  21. laanwj commented at 8:59 am on April 13, 2022: member

    This could be: https://bugreports.qt.io/browse/QTBUG-93476.

    Yes. The traceback at least looks eerily familiar. This would mean the root cause, and the reason this didn’t happen on 22.x, is the compiler version bump?

    Edit: it’s some really ugly code in freetype where it longjmps when a certain buffer has reached its size and needs to be reallocated. Iff this code is gone in newer freetype maybe we can avoid the issue by making sure it uses the newer freetype.

    Edit.2: no, the longjmp is not gone in Ft 2.11. It’s just moved upward in the call tree.

  22. hebasto commented at 9:27 am on April 13, 2022: member
  23. hebasto commented at 9:29 am on April 13, 2022: member

    Edit: it’s some really ugly code in freetype where it longjmps when a certain buffer has reached its size and needs to be reallocated.

    This explains that some time is required to crash.

  24. fanquake referenced this in commit 457148a803 on Apr 13, 2022
  25. fanquake referenced this in commit a75b8ec836 on Apr 13, 2022
  26. laanwj closed this on Apr 14, 2022

  27. laanwj referenced this in commit 6c9bc14a3f on Apr 14, 2022
  28. sidhujag referenced this in commit 794f18eb6a on Apr 14, 2022
  29. russeree referenced this in commit ac83524b20 on Apr 15, 2022
  30. fujicoin referenced this in commit 829decfc81 on May 1, 2022
  31. janus referenced this in commit fa47702623 on Aug 4, 2022
  32. dekm referenced this in commit 86e2702b49 on Oct 27, 2022
  33. dekm referenced this in commit 7be91387dd on Nov 7, 2022
  34. dekm referenced this in commit 70b22f0f88 on Nov 12, 2022
  35. backpacker69 referenced this in commit 3e209d274b on Jan 18, 2023
  36. dekm referenced this in commit 563e5c6d31 on Apr 6, 2023
  37. bitcoin-core locked this on Apr 14, 2023
  38. dekm referenced this in commit 4eef3195af on Jun 26, 2023
  39. dekm referenced this in commit 1cc903a5e5 on Jun 26, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/gui. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-10-23 00:20 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me