https://github.com/videolan/vlc
Revision 90e98b012e31f99548f2d5454cfde18e9d688e57 authored by Thomas Guillem on 15 March 2023, 10:44:11 UTC, committed by Thomas Guillem on 17 March 2023, 08:10:38 UTC
`restrict` tells the compiler that the tombstone pointer is the only way
to access the variable pointed by it. This is not case with multi-threading.

From the C11 specs:

§ 6.7.3 item 8
    An object that is accessed through a restrict-qualified pointer has
    a special association with that pointer. This association, defined
    in 6.7.3.1 below, requires that all accesses to that object use,
    directly or indirectly, the value of that particular pointer.

§ 6.7.3.1 item 4
    Every other lvalue used to access the value of X shall also have its
    address based on P.

Also set the pointer to const.

Fixes the following race condition when closing live555:

Thread 80 (Thread 28393.4880):
0  0x0000007953dbebbc in syscall () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so
1  0x0000007855d2c0ec in sys_futex (addr=0x89, op=137, val=0, to=0x0, addr2=0x0, val3=-1) at ../../src/linux/thread.c:82
2  vlc_futex_wait (addr=0x89, flags=0, val=0, to=0x0) at ../../src/linux/thread.c:93
3  vlc_atomic_wait (addr=0x89, val=0) at ../../src/linux/thread.c:109
4  0x0000007855d20e9c in vlc_cond_wait (cond=cond@entry=0x7829f26ce8, mutex=mutex@entry=0x7829f26cd8) at ../../src/misc/threads.c:298
5  0x0000007855d42244 in vlc_queue_Wait (q=0x7829f26cc0) at ../../include/vlc_queue.h:122
6  vlc_queue_DequeueKillable (q=0x7829f26cc0, tombstone=0x7829f26d00) at ../../include/vlc_queue.h:248
7  vlc_stream_fifo_Block (s=<optimized out>, eof=0x78709a8838) at ../../src/input/stream_fifo.c:75
8  0x0000007855cfa160 in vlc_stream_ReadRaw (s=s@entry=0x7819411360, buf=buf@entry=0x78c4393c80, len=len@entry=188) at ../../src/input/stream.c:466
9  0x0000007855cf9fe0 in vlc_stream_ReadPartial (s=s@entry=0x7819411360, buf=buf@entry=0x78c4393c80, len=len@entry=188) at ../../src/input/stream.c:489
10 0x0000007855cfad44 in vlc_stream_Read (s=<optimized out>, buf=0x78c4393c80, len=188) at ../../src/input/stream.c:504
11 vlc_stream_Block (s=0x7819411360, size=<optimized out>) at ../../src/input/stream.c:909
12 0x0000007855f1fe5c in ReadTSPacket (p_demux=p_demux@entry=0x78c42c0ce0) at ../../modules/demux/mpeg/ts.c:1808
13 0x0000007855f1de30 in Demux (p_demux=<optimized out>) at ../../modules/demux/mpeg/ts.c:649
4 0x0000007855d41e4c in vlc_demux_chained_Thread (data=0x7829f26c70) at ../../src/input/demux_chained.c:96
15 0x0000007855d2d5b8 in joinable_thread (data=0x7823341ea0) at ../../src/android/thread.c:96
16 0x0000007953e217c4 in __pthread_start(void*) () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so
17 0x0000007953dc41ac in __start_thread () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so

Thread 79 (Thread 28393.4875):
0  0x0000007953dbebbc in syscall () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so
1  0x0000007953e21d98 in pthread_join () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so
2  0x0000007855d2d204 in vlc_join (handle=0x7823341ea0, result=0x0) at ../../src/android/thread.c:147
3  0x0000007855d4202c in vlc_demux_chained_Delete (dc=0x7829f26c70) at ../../src/input/demux_chained.c:167
4  0x0000007855d3d92c in Close (p_this=<optimized out>) at ../../modules/access/live555.cpp:505
5  0x0000007855cb49dc in module_unneed (obj=obj@entry=0x78194110c0, module=0x78c83b0520) at ../../src/modules/modules.c:305
6  0x0000007855ceae78 in vlc_access_Destroy (access=0x78194110c0) at ../../src/input/access.c:54
7  0x0000007855cf958c in vlc_stream_Delete (s=0x78194110c0) at ../../src/input/stream.c:150
8  0x0000007855ce4954 in demux_Delete (demux=0x78709a8d60) at ../../include/vlc_demux.h:291
9  InputSourceDestroy (in=0x781a3aa780) at ../../src/input/input.c:2852
10 0x0000007855ce39f0 in End (p_input=p_input@entry=0x7863073c00) at ../../src/input/input.c:1413
11 0x0000007855ce0620 in Run (data=0x7863073c00) at ../../src/input/input.c:431
12 0x0000007855d2d5b8 in joinable_thread (data=0x78231b02c0) at ../../src/android/thread.c:96
13 0x0000007953e217c4 in __pthread_start(void*) () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so
14 0x0000007953dc41ac in __start_thread () from /home/tom/work/git/libvlcjni/libvlc/.gdb/obj/local/arm64-v8a/system/lib64/libc.so
1 parent bdc6edb
Raw File
Tip revision: 90e98b012e31f99548f2d5454cfde18e9d688e57 authored by Thomas Guillem on 15 March 2023, 10:44:11 UTC
vlc_queue: fix restrict violation
Tip revision: 90e98b0
.mailmap
# Bad (and bouncing) emails and names
Jean-Baptiste Kempf <jb@videolan.org>
<jb@videolan.org> <jb@altair.videolan.org>
<jb@videolan.org> <jb@ambre.(none)>
<jb@videolan.org> <jb@sasmira.jbkempf.com>
<jb@videolan.org> <jb@elayne.jbkempf.com>
<jb@videolan.org> <Jean-Baptiste@ambre.(none)>
<jb@videolan.org> <jb@sasmira.(none)>
Jean-Baptiste Kempf <jb@videolan.org> U-AMBRE\Jean-Baptiste <Jean-Baptiste@ambre.(none)>
Jean-Baptiste Kempf <jb@videolan.org> U-SASMIRA\jb <jb@sasmira.(none)>
<remi@remlab.net> <remi.denis-courmont@nokia.com>
<remi@remlab.net> <rdenis@simphalempin.com>
<remi@remlab.net> <rem@videolan.org>
<pdherbemont@videolan.org> <steg@nibudy.local>
<dionoea@videolan.org> <antoine@macbook.(none)>
Felix Paul Kühne <fkuehne@videolan.org>
<fkuehne@videolan.org> <fpk@Bartleby.local>
<fkuehne@videolan.org> <fpk@Felix-Kuhnes-MacBook.local>
<fkuehne@videolan.org> <fpk@felix-kuhnes-macbook.local>
<fkuehne@videolan.org> <felix@serioese.gmbh>
<fkuehne@videolan.org> <felix@feepk.net>
<jpsaman@videolan.org> <jpsaman@gandalf.(none)>
<jpsaman@videolan.org> <jpsaman@gandalf.kpn-communicationcentre.nl>
<jpsaman@videolan.org> <jpsaman@m2x.nl>
<xtophe@videolan.org> <xtophe@altair.v.videolan.org>
Rafaël Carré <funman@videolan.org> <fun@kebab.(none)>
<sigmunau@videolan.org> <sigmunau@hobbes.(none)>
<ipkiss@videolan.org> <ipkiss@ulukai.(none)>
Erwan Tulou <erwan10@videolan.org> <brezhoneg1@yahoo.fr>
Erwan Tulou <erwan10@videolan.org> erwan <erwan@erwan-VirtualBox.(none)>
<jleben@videolan.org> <jakob@leptop.(none)>
<robux@videolan.org> <slhomme@matroska.org>
<robux@videolan.org> <robux4@gmail.com>
<robux@videolan.org> <robux4@robux4-desktop.(none)>
<robux@videolan.org> <steve.lhomme@free.fr>
JP Dinger <jpd@videolan.org> <jpd@m2x.nl>
JP Dinger <jpd@videolan.org> <jpd@dsb.tudelft.nl>
Jean-Philippe André <jpeg@videolan.org> <jpeg@aena.(none)>
Jean-Philippe André <jpeg@videolan.org> <jpeg@via.ecp.fr>
Jean-Philippe André <jpeg@videolan.org> <jpeg@endymion.via.ecp.fr>
Jean-Philippe André <jpeg@videolan.org> <JPeg@videolan.org>
Jean-Philippe André <jpeg@videolan.org> <jpeg@aena.via.ecp.fr>
Sébastien Escudier <sebastien-devel@celeos.eu>
Sébastien Escudier <sebastien-devel@celeos.eu> <sebastien@sebastien-desktop.(none)>
Éric Lassauge <lassauge@users.sourceforge.net>
Éric Lassauge <lassauge@users.sourceforge.net> <lassauge {AT} users {dot} sourceforge {dot} net>
Éric Lassauge <lassauge@users.sourceforge.net> <gozer@progrock.com>
Mirsal Ennaime <mirsal@mirsal.fr> <mirsal.ennaime@gmail.com>
<mirsal@mirsal.fr> <mirsal@mirsal-laptop.(none)>
Pankaj Yadav <pankajdnapster@gmail.com>
<pankajdnapster@gmail.com> <pk@videolan.org>
Pankaj Yadav <pankajdnapster@gmail.com> <pk@pk-desktop.(none)>
Jean-François Massol <jf.massol@gmail.com>
<jf.massol@gmail.com> <jf@debian.(none)>
Benjamin Poulain <ikipou@gmail.com>
Basos G <noxelia@gmail.com>
Basos G <noxelia@gmail.com> <noxelia 4t gmail , com>
Basos G <noxelia@gmail.com> <noxelia 4t gmail d0t c0m>
Basos G <noxelia@gmail.com> <noxelia 4t gmail c0m>
<srikiraju@gmail.com> <srikiraju at gmail dot com>
<dmenest-vlc@ofb.net> <dmenest-vlc at ofb dot net>
<kelemeng@gnome.hu> <kelemeng at gnome dot hu>
<tkrotoff@gmail.com> <tkrotoff at>
Aurélien Nephtali <aurelien@sitadelle.com> <aurelien sitadelle.com>
Aurélien Nephtali <aurelien.nephtali@gmail.com>
Konstanty Bialkowski <konstanty@ieee.org> <konstanty@gmail.com>
Pavlov Konstantin <thresh@videolan.org>
<thresh@videolan.org> <thresh@altlinux.ru>
Pavlov Konstantin <thresh@videolan.org> <thresh@altlinux.org>
<videolan@videolan.org> <videolan@jones.via.ecp.fr>
<videolan@videolan.org> <noreply@videolan.org>
<jpountz@jpountz.net> <jpountz@videolan.org>
<atmo@videolan.org> <WeberAndre@gmx.de>
Bill C. Riemers <briemers+git@redhat.com> <docbill@hartnell.local>
Brad Smith <brad@comstyle.com>
<cristi@secarica.ro> <cristi.secarica.ro>
<davidf@rd.bbc.co.uk> <davidf+nntp@woaf.net>
<davidf@rd.bbc.co.uk> <davidf@woaf.net>
Hugo Beauzée-Luyssen <hugo@beauzee.fr> <hugo@beauzee.fr>
Hugo Beauzée-Luyssen <hugo@beauzee.fr> <beauze.h@gmail.com>
Hugo Beauzée-Luyssen <hugo@beauzee.fr> <chouquette@videolan.org>
<markfm@videolan.org> <mfmbusiness@earthlink.net>
<markfm@videolan.org> <mfmori@hotmail.com>
Nicolas Chauvet <kwizart@gmail.com>
Rob Jonson <rob@hobbyistsoftware.com>
Sigmund Augdal Helberg <sigmunau@videolan.org>
Sigmund Augdal Helberg <sigmunau@videolan.org> Sigmund Augdal <sigmund@snap.tv>
Sigmund Augdal Helberg <sigmunau@videolan.org> Sigmund Augdal <sigmunau@hobbes.(none)>
Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>
Anthony Loiseau <anthony.loiseau@gmail.com> <thannoy@actech-innovation.com>
FUJISAWA Tooru <arai_a@mac.com>
Ken Self <kenself@optusnet.com.au>
Tony Gaillard <tony.gaillard@supinfo.com> <Tony.GAILLARD@supinfo.com>
Przemyslaw Fiala <bl4@playker.info>
Marián Hikaník <podnety@mojepreklady.net>
Michael McEll <mapei_@hotmail.com>
Marian Ďurkovič <md@bts.sk>
Marian Ďurkovič <md@bts.sk> Marian Durkovic <md@videolan.org>
#Maybe switch to the videolan address?
Dylan Yudaken <dyudaken@gmail.com>
Martin T. H. Sandsmark <sandsmark@samfundet.no>
<cyril.mathe@gmail.com> <cmathe@actech-innovation.com>
<riquedafreak@videolan.org> <enrique.osuna@gmail.com>
<nib9@charter.net> <zaggal69@gmail.com>
Alexander Lakhin <exclusion@gmail.com>
Denis Arnaud <denisarnuad@yahoo.fr>
Éric Lassauge <lassauge@users.sf.net>
Faustino Osuna <riquedafreak@videolan.org>
Faustino Osuna <riquedafreak@videolan.org> Faustino E. Osuna <enrique.osuna@gmail.com>
Mihkel Kirjutas <turakas@gmail.com>
Naohiro Koriyama <nkoriyama@gmail.com>
Predrag Ljubenović <predragljubenovic@gmail.com>
Ajith Manjula Senarathne <uthmax.sms@gmail.com>
Andy Chenee <chenee543216@gmail.com>
<chenee543216@gmail.com> Andy Chenee <chenee@hhcn.com>
Dominko Azdajic <domazd@mail.ru> Dominko Aždajić <domazd@web.de>
Jérôme Decoodt <djc@videolan.org>
Jérôme Decoodt <djc@videolan.org> Jérôme Decoodt <djc+git@videolan.org>
Matej Urbančič <mateju@svn.gnome.org> Matej Urban <matej.urban@gmail.com>
Xabier Aramendi <azpidatziak@gmail.com>
Gwenole Beauchesne <gb.devel@gmail.com> <gbeauchesne@splitted-desktop.com>
Frédéric Yhuel <fyhuel@viotech.net>
Ming Hu <tewilove@gmail.com>
Kuan-Chung Chiu <buganini@gmail.com>
Cédric Cocquebert <cedric.cocquebert@cea.fr>
François Cartegnie <fcvlcdev@free.fr>
Jean-Paul Saman <jpsaman@videolan.org>
Jean-Paul Saman <jpsaman@videolan.org> jpsaman@m2x.nl <jpsaman@m2x.nl>
Jean-Paul Saman <jpsaman@videolan.org> Jean-Paul Saman <jean-paul.saman@m2x.nl>
Samuel Hocevar <sam@videolan.org>
Samuel Hocevar <sam@videolan.org> Sam Hocevar <sam@zoy.org>
Samuel Hocevar <sam@videolan.org> Sam Hocevar <sam@hocevar.net>
Yannick Bréhon <y.brehon@qiplay.com>
Rui Zhang <bbcallen@gmail.com>
Ronald Wright <logiconcepts819@gmail.com> Ron Wright <logiconcepts819@gmail.com>
Clément Lecigne <clemun@gmail.com> Clement Lecigne <clecigne@google.com>
Siarhei Daryichau Дар'ічаў Сяргей <charnabog@gmail.com>
#
# Preferred emails
<malte@tancred.com> <malte@frontbase.com>
<xtophe@videolan.org> <xtophe@chewa.net>
<hartman@videolan.org> <hartman@veda.student.utwente.nl>
<etix@videolan.org> <etix@l0cal.com>
<steven@m20.nl> <skramer@inbeeld.eu>
<jarmo.torvinen@iki.fi> <jarmo.torvinen@jutel.fi>
back to top