Segfault in set_VTS_PTT
This is on VLC 3.0.8 with libdvdnav-6.0.1. I am trying to play a retail DVD published by Selecta Visión. This is the normal output of the program:
> vlc /dev/sr0
VLC media player 3.0.8 Vetinari (revision 3.0.8-0-gf350b6b5a7)
[000055715b475b70] main xml reader error: XML reader not found
[000055715b474fe0] main audio output error: no suitable audio output module
[000055715b3033f0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Remote control interface initialized. Type `help' for help.
libdvdnav: Using dvdnav version 6.0.1
libdvdnav: DVD Title: EVAN_DEATH
libdvdnav: DVD Serial Number: 3CB3699DAPPLEDSP
libdvdnav: DVD Title (Alternative): EVAN_DEATH
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 2
libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient
libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x0000013f
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x000001c0
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x0000ec11
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_0.VOB at 0x0027435c
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_02_0.VOB (0x0027435c)
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_1.VOB at 0x002743a9
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_02_1.VOB (0x002743a9)!!
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_0.VOB at 0x00276a18
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_03_0.VOB (0x00276a18)
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_1.VOB at 0x00276a65
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_03_1.VOB (0x00276a65)!!
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_0.VOB at 0x002b6bd3
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_04_0.VOB (0x002b6bd3)
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_1.VOB at 0x002b6c20
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_04_1.VOB (0x002b6c20)!!
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_05_0.VOB at 0x002d37c0
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_05_0.VOB (0x002d37c0)
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_05_1.VOB at 0x002d380d
libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_05_1.VOB (0x002d380d)!!
libdvdread: Elapsed time 0
libdvdread: Found 5 VTS's
libdvdread: Elapsed time 0
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdread: Can't seek to block 2573139
libdvdread: Can't seek to block 2573139
libdvdread: Invalid IFO for title 2 (VTS_02_0.IFO).
libdvdnav: ifoOpenVTSI failed
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 2
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdnav: Language 'en' not found, using 'es' instead
libdvdnav: Menu Languages available: es
libdvdread: Can't seek to block 2573139
libdvdread: Can't seek to block 2573139
libdvdread: Invalid IFO for title 2 (VTS_02_0.IFO).
libdvdnav: ifoOpenVTSI failed
libdvdread: Can't seek to block 2573139
libdvdread: Can't seek to block 2573139
libdvdread: Can't seek to block 2573139
libdvdread: Can't seek to block 2583044
libdvdread: Can't seek to block 2583044
libdvdread: Can't seek to block 2583044
libdvdread: Invalid IFO for title 2 (VTS_02_0.BUP).
libdvdread: Can't seek to block 2583053
libdvdread: Can't seek to block 2583053
libdvdread: Can't seek to block 2583053
libdvdread: Can't seek to block 2845630
libdvdread: Can't seek to block 2845630
libdvdread: Can't seek to block 2845630
libdvdread: Invalid IFO for title 3 (VTS_03_0.BUP).
libdvdread: Can't seek to block 2845641
libdvdread: Can't seek to block 2845641
libdvdread: Can't seek to block 2845641
libdvdread: Can't seek to block 2963373
libdvdread: Can't seek to block 2963373
libdvdread: Can't seek to block 2963373
libdvdread: Invalid IFO for title 4 (VTS_04_0.BUP).
libdvdread: Can't seek to block 2963383
libdvdread: Can't seek to block 2963383
libdvdread: Can't seek to block 2963383
libdvdread: Can't seek to block 2995047
libdvdread: Can't seek to block 2995047
libdvdread: Can't seek to block 2995047
libdvdread: Invalid IFO for title 5 (VTS_05_0.BUP).
zsh: segmentation fault (core dumped) vlc /dev/sr0
Using gdb I have traced the crash to be in the 3rd call to libdvdnav-6.0.1/src/vm/getset.c:65
if ((vts_ttn < 1) || (vts_ttn > vm->vtsi->vts_ptt_srpt->nr_of_srpts) ||
(part < 1) || (part > vm->vtsi->vts_ptt_srpt->title[vts_ttn - 1].nr_of_ptts) ) {
return 0;
}
Specifically, vm->vtsi is a null pointer. Both vtsN and (vm->state).vtsN are 1, which prevents the earlier branch from falling through.