zao / foo_wave_seekbar

A foobar2000 UI seekbar element displaying the playing waveform.
http://www.foobar2000.org/components/view/foo_wave_seekbar
Other
85 stars 7 forks source link

Illegal operation crash after playing certain .mkv file #33

Closed ivan closed 9 years ago

ivan commented 9 years ago

Playing https://ludios.org/tmp/seekbar-crash-sample.mkv in foobar2000 v1.3.7 with foo_wave_seekbar 0.2.45 loaded results in an instant crash. This reproduces 100% of the time here. Most other .mkv files seem to work fine.

Illegal operation:
Code: C0000094h, flags: 00000000h, address: 5AD1A233h
Last win32 error: 38

Call path not available.

Code bytes (5AD1A233h):
5AD1A1F3h:  00 00 CC CC CC CC CC CC CC CC CC CC CC 55 8B EC
5AD1A203h:  68 1C 65 E3 5A FF 75 08 E8 F0 D2 0C 00 83 C4 08
5AD1A213h:  5D C3 CC CC CC CC CC CC CC CC CC CC CC 55 8B EC
5AD1A223h:  83 EC 24 8B 45 0C 33 D2 53 56 8B 75 10 8B 40 08
5AD1A233h:  F7 F6 57 8B 7D 08 8B D8 56 89 5D DC 8D 4F 04 E8
5AD1A243h:  A9 F2 FD FF C7 45 08 00 00 00 00 85 F6 0F 8E B4
5AD1A253h:  01 00 00 8B 45 10 33 F6 C1 E0 02 89 45 E0 89 45
5AD1A263h:  EC 8B 4F 04 83 C1 04 53 03 CE E8 DE F1 FD FF 8B

Stack (0565F91Ch):
0565F8FCh:  00000000 00000000 10FEBD90 0003001C
0565F90Ch:  0565F9EC 0565FA00 00000800 0565F9AC
0565F91Ch:  00000000 0565FA3C 5AB6ECFA 01430000
0565F92Ch:  00000000 10FEDDC0 0565F940 5ACF8902
0565F93Ch:  10FEDDC0 0565F958 5ACF90B7 0565FA20
0565F94Ch:  5AD1C95F 0565F9B8 0565F974 00000000
0565F95Ch:  00000800 5AE595A0 312CF7CD 5AE595A0
0565F96Ch:  00004E34 0565FC2C 5AE21024 10FC1790
0565F97Ch:  00000000 00000001 5AE21024 10FC1800
0565F98Ch:  00000000 00000001 5AE21024 10FC1610
0565F99Ch:  00000000 00000001 00000000 5AE21024
0565F9ACh:  00000000 00000000 00000000 5AE20FCC
0565F9BCh:  1103D078 00000000 00000001 5AE20FCC
0565F9CCh:  1103D1F8 00000000 00000001 5AE20FCC
0565F9DCh:  1103CF40 00000000 00000001 0565F9FC
0565F9ECh:  5AE22128 0565F9FC 00000000 00000000
0565F9FCh:  5AE21024 00000000 00000000 00000000
0565FA0Ch:  5AE20B00 00000000 0565FBDC 5AE0FF56
0565FA1Ch:  00000006 0565FBE8 5AD1DD67 0565FB80
0565FA2Ch:  312CF605 0565FBF4 5AE20B48 0565FC8C

Registers:
EAX: 00000000, EBX: 0565FA3C, ECX: 5AE595A0, EDX: 00000000
ESI: 00000000, EDI: 00000000, EBP: 0565F948, ESP: 0565F91C

Crash location:
Module: foo_wave_seekbar
Offset: 4A233h

Loaded modules:
[...]

Stack dump analysis:
Address: 5AB6ECFAh (MSVCR120+ECFAh), symbol: "free" (+1Ah)
Address: 5ACF8902h (foo_wave_seekbar+28902h)
Address: 5ACF90B7h (foo_wave_seekbar+290B7h)
Address: 5AD1C95Fh (foo_wave_seekbar+4C95Fh)
Address: 5AE595A0h (foo_wave_seekbar+1895A0h), symbol: "foobar2000_get_interface" (+7F160h)
Address: 5AE595A0h (foo_wave_seekbar+1895A0h), symbol: "foobar2000_get_interface" (+7F160h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE20FCCh (foo_wave_seekbar+150FCCh), symbol: "foobar2000_get_interface" (+46B8Ch)
Address: 5AE20FCCh (foo_wave_seekbar+150FCCh), symbol: "foobar2000_get_interface" (+46B8Ch)
Address: 5AE20FCCh (foo_wave_seekbar+150FCCh), symbol: "foobar2000_get_interface" (+46B8Ch)
Address: 5AE22128h (foo_wave_seekbar+152128h), symbol: "foobar2000_get_interface" (+47CE8h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE20B00h (foo_wave_seekbar+150B00h), symbol: "foobar2000_get_interface" (+466C0h)
Address: 5AE0FF56h (foo_wave_seekbar+13FF56h), symbol: "foobar2000_get_interface" (+35B16h)
Address: 5AD1DD67h (foo_wave_seekbar+4DD67h)
Address: 5AE20B48h (foo_wave_seekbar+150B48h), symbol: "foobar2000_get_interface" (+46708h)
Address: 5AE21F00h (foo_wave_seekbar+151F00h), symbol: "foobar2000_get_interface" (+47AC0h)
Address: 5AE21D01h (foo_wave_seekbar+151D01h), symbol: "foobar2000_get_interface" (+478C1h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE21024h (foo_wave_seekbar+151024h), symbol: "foobar2000_get_interface" (+46BE4h)
Address: 5AE595A0h (foo_wave_seekbar+1895A0h), symbol: "foobar2000_get_interface" (+7F160h)
Address: 5AE20B88h (foo_wave_seekbar+150B88h), symbol: "foobar2000_get_interface" (+46748h)
Address: 77D71309h (ntdll+41309h), symbol: "RtlAllocateHeap" (+C9h)
Address: 5AE20B48h (foo_wave_seekbar+150B48h), symbol: "foobar2000_get_interface" (+46708h)
Address: 5AE21FCCh (foo_wave_seekbar+151FCCh), symbol: "foobar2000_get_interface" (+47B8Ch)
Address: 5AE1665Bh (foo_wave_seekbar+14665Bh), symbol: "foobar2000_get_interface" (+3C21Bh)
Address: 5AD6B800h (foo_wave_seekbar+9B800h), symbol: "g_gdi_entrypoint" (+35700h)
Address: 5AE21FB4h (foo_wave_seekbar+151FB4h), symbol: "foobar2000_get_interface" (+47B74h)
Address: 5AE59404h (foo_wave_seekbar+189404h), symbol: "foobar2000_get_interface" (+7EFC4h)
Address: 5AE59404h (foo_wave_seekbar+189404h), symbol: "foobar2000_get_interface" (+7EFC4h)
Address: 5AB6ED63h (MSVCR120+ED63h), symbol: "malloc" (+33h)
Address: 5AE595A0h (foo_wave_seekbar+1895A0h), symbol: "foobar2000_get_interface" (+7F160h)
Address: 5AE1009Fh (foo_wave_seekbar+14009Fh), symbol: "foobar2000_get_interface" (+35C5Fh)
Address: 5AD0981Fh (foo_wave_seekbar+3981Fh)
Address: 5AE20B48h (foo_wave_seekbar+150B48h), symbol: "foobar2000_get_interface" (+46708h)
Address: 5AD131F0h (foo_wave_seekbar+431F0h)
Address: 75521291h (CRYPTBASE+1291h), symbol: "SystemFunction036" (+11h)
Address: 5AE0EA53h (foo_wave_seekbar+13EA53h), symbol: "foobar2000_get_interface" (+34613h)
Address: 5ACFFA11h (foo_wave_seekbar+2FA11h)
Address: 5AE0D7D8h (foo_wave_seekbar+13D7D8h), symbol: "foobar2000_get_interface" (+33398h)
Address: 5AD13453h (foo_wave_seekbar+43453h)
Address: 5AE59404h (foo_wave_seekbar+189404h), symbol: "foobar2000_get_interface" (+7EFC4h)
Address: 5AE59404h (foo_wave_seekbar+189404h), symbol: "foobar2000_get_interface" (+7EFC4h)
Address: 5AE0F2E8h (foo_wave_seekbar+13F2E8h), symbol: "foobar2000_get_interface" (+34EA8h)
Address: 5AD138D2h (foo_wave_seekbar+438D2h)
Address: 76D7BC73h (combase+BC73h), symbol: "RoUninitialize" (+33h)
Address: 5AE0F368h (foo_wave_seekbar+13F368h), symbol: "foobar2000_get_interface" (+34F28h)
Address: 5AD16E97h (foo_wave_seekbar+46E97h)
Address: 5AE59404h (foo_wave_seekbar+189404h), symbol: "foobar2000_get_interface" (+7EFC4h)
Address: 5AE0F718h (foo_wave_seekbar+13F718h), symbol: "foobar2000_get_interface" (+352D8h)
Address: 5AD09AB1h (foo_wave_seekbar+39AB1h)
Address: 5ACFA5B0h (foo_wave_seekbar+2A5B0h)
Address: 5AE63F84h (foo_wave_seekbar+193F84h), symbol: "foobar2000_get_interface" (+89B44h)
Address: 77DC8060h (ntdll+98060h), symbol: "wcstombs" (+90h)
Address: 76EFF0ECh (KERNELBASE+F0ECh), symbol: "GetSystemTimeAsFileTime" (+4Ch)
Address: 5AE0EAABh (foo_wave_seekbar+13EAABh), symbol: "foobar2000_get_interface" (+3466Bh)
Address: 5ACD7195h (foo_wave_seekbar+7195h)
Address: 5AB8BFB4h (MSVCR120+2BFB4h), symbol: "_get_flsindex" (+6h)
Address: 5AB8C01Dh (MSVCR120+2C01Dh), symbol: "_get_flsindex" (+6Fh)
Address: 5AB8BFB4h (MSVCR120+2BFB4h), symbol: "_get_flsindex" (+6h)
Address: 5AB7A0D5h (MSVCR120+1A0D5h), symbol: "_ValidateRead" (+439h)
Address: 5AB8C001h (MSVCR120+2C001h), symbol: "_get_flsindex" (+53h)
Address: 5AB8BFB4h (MSVCR120+2BFB4h), symbol: "_get_flsindex" (+6h)
Address: 76C47C04h (KERNEL32+17C04h), symbol: "BaseThreadInitThunk" (+24h)
Address: 76C47BE0h (KERNEL32+17BE0h), symbol: "BaseThreadInitThunk" (+0h)
Address: 77D8B5AFh (ntdll+5B5AFh), symbol: "RtlInitializeExceptionChain" (+8Fh)
Address: 76FAF510h (KERNELBASE+BF510h), symbol: "UnhandledExceptionFilter" (+0h)
Address: 77DC8060h (ntdll+98060h), symbol: "wcstombs" (+90h)
Address: 77D8B57Ah (ntdll+5B57Ah), symbol: "RtlInitializeExceptionChain" (+5Ah)
Address: 77D7041Eh (ntdll+4041Eh), symbol: "RtlCaptureContext" (+DFh)
Address: 5AB8BFB4h (MSVCR120+2BFB4h), symbol: "_get_flsindex" (+6h)

Environment:
App: foobar2000 v1.3.7
UI: Default User Interface 0.9.5

Components:
Core (2015-01-14 10:28:10 UTC)
    foobar2000 core 1.3.7
foo_albumlist.dll (2015-01-14 10:22:14 UTC)
    Album List 4.5
foo_cdda.dll (2015-01-14 10:20:12 UTC)
    CD Audio Decoder 3.0
foo_converter.dll (2015-01-14 10:20:42 UTC)
    Converter 1.5
foo_dsp_eq.dll (2015-01-14 10:22:30 UTC)
    Equalizer 1.0
foo_dsp_std.dll (2015-01-14 10:21:54 UTC)
    Standard DSP Array 1.3.1
foo_fileops.dll (2015-01-14 10:21:20 UTC)
    File Operations 2.2.1
foo_input_std.dll (2015-01-14 10:28:10 UTC)
    Standard Input Array 1.0
foo_jesus.dll (2014-12-07 06:29:19 UTC)
    Autosave & Autobackup 10
foo_rgscan.dll (2015-01-14 10:26:12 UTC)
    ReplayGain Scanner 2.2.1
foo_ui_std.dll (2015-01-14 10:28:10 UTC)
    Default User Interface 0.9.5
foo_unpack.dll (2015-01-14 10:21:00 UTC)
    ZIP/GZIP/RAR Reader 1.7.1
foo_utils.dll (2014-12-08 07:36:25 UTC)
    Playlist Tools 0.6.2 beta 6
foo_wave_seekbar.dll (2014-11-24 10:03:46 UTC)
    Waveform seekbar 0.2.45
zao commented 9 years ago

I'll take a look when time permits to see if I can reproduce the problem, hopefully I don't have to sift through minidumps from the crash reporter.

I recall faintly that there has been problems before with Matroska files but those were mostly from memory exhaustion with movies creeping into the Media Library.

Thanks for providing the offending file.

zao commented 9 years ago

@ivan Please give 0.2.45.4 a try, there is detection and handling of this category of problems in it.

It also contains the recent improvements to how scanning threads are used, but it should be stable enough for regular usage.

ivan commented 9 years ago

Thanks for the fix! 0.2.45.4 works fine and no longer crashes.