due to specifics of FreeBSD pthreads implementation transcode doesn't work properly with -M 2 (and probably higher) option. The problems manifest themselves as either (a) transcode "hang" (no work, no CPU utilization) or (b) transcode exits and "completes work" too early. Fix: symptome (a) is caused by the way libc_r handles file descriptors at execve(), basically after forking a new process the whole parent process would block and read()/write() instead of just a single thread. See http://www.freebsd.org/cgi/query-pr.cgi?pr=standards/43335 for details. clone.c part of the patch below should help those who have lib/libc_r/uthread/uthread_execve.c version 1.11.2.6 for 4.X or 1.16 for 5.X it will not make any difference for those who have earlier libc_r symptome (b) results from delivery of a signal to a process for thread context switch. In this situation read()/write() operation on a fifo may return EINTR, normally opeartion should be retried in this situation, but transcode would treat it as an error. ioaux.c part of patch should help with that. How-To-Repeat: try to transcode a long DVD movie to mpeg2 (svcd) using -M 2 option
State Changed From-To: open->closed Superseded by 50377