[vlc-devel] [PATCH] vlc_execve: fix fork() version from segfaulting and also endless loop
kearygriffin at gmail.com
Fri Jun 11 03:52:32 CEST 2010
I was trying to work with the vlc_execve function to add some new functionality to the livehttp module, but was having some problems getting it to work.
The only other place I could find it used was in the oldhttp module, in the http-handlers section. I tried using the http-handlers and ended up having the same issues.
The first problem seems to be the vlc_execve tries to free the output buffer (*pp_data) before doing anything. The oldhttp module never initializes *pp_data to anything before calling vlc_execve, so the free() would end up segfaulting. I fixed this by commenting out the free() as I can't find any other code that uses vlc_execve, and so assume the calling convention of oldhttp (in not initializing the pointer to anything) is the correct behavior. Let me know if this is an incorrect assumption and I should fix this by initializing *pp_data inside of the oldhttp module.
The second problem was the function never seemed to return. I'm not really familiar with POSIX polling/processes, so I'm not sure I fixed it the correct way. The problem seemed to be that in the while(!p_object->b_die) loop that does the I/O with the process (writing stdin and saving stdout), there was no exit case and it would stay in the loop forever, even after the process ended. I fixed it by keeping track of when all I/O is finished, and then exiting the loop.
Keary Griffin (1):
vlc_execve: fix fork() version from segfaulting and also endless loop
src/extras/libc.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
More information about the vlc-devel