On Thu, Jul 11, 2019 at 11:16:49AM +0800, myp...@gmail.com wrote: > On Wed, Jul 10, 2019 at 11:11 PM Limin Wang <lance.lmw...@gmail.com> wrote: > > > > > > ping? I have developed code to use avio_open_dir function, after using > > avio_close_dir > > to release the resource, my ffmepg command will lost interact for the fd > > 0 is closed by avio_close_dir. > > > > > > On Tue, Jun 18, 2019 at 06:45:13PM +0800, lance.lmw...@gmail.com wrote: > > > From: Limin Wang <lance.lmw...@gmail.com> > > > > > > Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > > > --- > > > libavformat/file.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/libavformat/file.c b/libavformat/file.c > > > index 08c7f8e6dd.. 40ae9ad2a8 100644 > > > --- a/libavformat/file.c > > > +++ b/libavformat/file.c > > > @@ -274,6 +274,7 @@ static int file_open_dir(URLContext *h) > > > #if HAVE_LSTAT > > > FileContext *c = h->priv_data; > > > > > > + c->fd = -1; > I don't konw why need to change the fd , suppose we have a calling > sequence like file_open ahead of file_open_dir, can we leak a fd > resource ?
How to reproduce the issue: 1. add one debug message like below: diff --git a/libavformat/file.c b/libavformat/file.c index 08c7f8e6dd..f06f1aa506 100644 --- a/libavformat/file.c +++ b/libavformat/file.c @@ -266,6 +266,8 @@ static int64_t file_seek(URLContext *h, int64_t pos, int whence) static int file_close(URLContext *h) { FileContext *c = h->priv_data; + + av_log(h, AV_LOG_INFO, "fd: %d\n", c->fd); return close(c->fd); } 2. build the examples with make examples 3. run below example tool: ./doc/examples/avio_dir_cmd list ./doc/examples <FILE> 78056 transcoding.o 501(20) 644 1562818479000000 1562818949000000 1562818479000000 <FILE> 18744308 muxing 501(20) 755 1562818948000000 1562818948000000 1562818948000000 [file @ 0x7f8e50406700] fd: 0 You can see valid fd 0 is closed unexpected, if you run in ffmpeg with avio_dir_close option, you'll lose interaction cli control for the close. > > > c->dir = opendir(h->filename); > > > if (!c->dir) > > > return AVERROR(errno); > > > -- > > > 2.21.0 > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".