Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 06 Jun 2005 16:03:19 +0200
From:      "=?iso-8859-15?Q?Jos=E9?= M. =?iso-8859-15?Q?Fandi=F1o?="  <freebsd@fadesa.es>
To:        FreeBSD-multimedia@FreeBSD.org
Subject:   debugging transcode 
Message-ID:  <42A457A7.95A86273@fadesa.es>

next in thread | raw e-mail | index | archive | help
Hello,

 I was trying to convert a nuppelvideo stream to a more usable format,
but transcode causes a segfault whith it. Running several tests it seems 
a problem with the audio processing of nuv files because "-x nuv,null"
works and "-x nuv" doesn't.

It's FreeBSD 5.4-RELEASE and transcode 1.0.0b3 from ports.

> tcprobe -i dtv.nuv
[tcprobe] NuppelVideo stream
[tcprobe] summary for dtv.nuv, (*) = not default, 0 = not detected
import frame size: -g 768x576 [720x576] (*)
       frame rate: -f 25.000 [25.000] frc=0
      audio track: -a 0 [0] -e 44100,16,2 [48000,16,2] -n 0x1 [0x2000] (*) 


 I was told by the transcode developers to get the cause of the segfault,
since I'm not a programmer it's a little hard to me debug this.

Until now I was able to get some stuff:


> gdb /usr/local/bin/transcode ./transcode.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
Core was generated by `transcode'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/local/lib/libiconv.so.3...done.
Loaded symbols for /usr/local/lib/libiconv.so.3
Reading symbols from /lib/libm.so.3...done.
Loaded symbols for /lib/libm.so.3
Reading symbols from /lib/libz.so.2...done.
Loaded symbols for /lib/libz.so.2
Reading symbols from /usr/local/lib/libxml2.so.5...done.
Loaded symbols for /usr/local/lib/libxml2.so.5
Reading symbols from /usr/lib/libpthread.so.1...done.
Loaded symbols for /usr/lib/libpthread.so.1
Reading symbols from /lib/libc.so.5...done.
Loaded symbols for /lib/libc.so.5
Reading symbols from /usr/local/lib/transcode/import_nuv.so...done.
Loaded symbols for /usr/local/lib/transcode/import_nuv.so
Reading symbols from /usr/local/lib/transcode/export_lame.so...done.
Loaded symbols for /usr/local/lib/transcode/export_lame.so
Reading symbols from /usr/local/lib/transcode/export_ffmpeg.so...done.
Loaded symbols for /usr/local/lib/transcode/export_ffmpeg.so
Reading symbols from /usr/local/lib/libmp3lame.so.0...done.
Loaded symbols for /usr/local/lib/libmp3lame.so.0
Reading symbols from /usr/local/lib/libavcodec.so...done.
Loaded symbols for /usr/local/lib/libavcodec.so
Reading symbols from /usr/local/lib/libfaac.so.0...done.
Loaded symbols for /usr/local/lib/libfaac.so.0
Reading symbols from /usr/local/lib/libvorbis.so.3...done.
Loaded symbols for /usr/local/lib/libvorbis.so.3
Reading symbols from /usr/local/lib/libvorbisenc.so.2...done.
Loaded symbols for /usr/local/lib/libvorbisenc.so.2
Reading symbols from /usr/lib/libstdc++.so.4...done.
Loaded symbols for /usr/lib/libstdc++.so.4
Reading symbols from /usr/local/lib/libmp4v2.so.0...done.
Loaded symbols for /usr/local/lib/libmp4v2.so.0
Reading symbols from /usr/local/lib/libogg.so.5...done.
Loaded symbols for /usr/local/lib/libogg.so.5
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0  0x282ec3cb in kse_thr_interrupt () at kse_thr_interrupt.S:2
2	RSYSCALL(kse_thr_interrupt)
(gdb)
(gdb) where full
#0  0x282ec3cb in kse_thr_interrupt () at kse_thr_interrupt.S:2
No locals.
#1  0x282db340 in sig_daemon (arg=0x0) at /usr/varios/src/lib/libpthread/thread/thr_sig.c:214
	i = 129
	ts = {tv_sec = 30, tv_nsec = 0}
	set = {__bits = {0, 0, 0, 0}}
	curkse = (struct kse *) 0x80a0100
#2  0x282e49b2 in kse_sched_single (kmbx=0x17f) at /usr/varios/src/lib/libpthread/thread/thr_kern.c:883
	curkse = (struct kse *) 0x80a0100
	curthread = (struct pthread *) 0x80a6200
	ts = {tv_sec = 0, tv_nsec = 0}
	sigmask = {__bits = {0, 0, 0, 0}}
	i = 134897664
	sigseqno = 0
	level = 383
	first = 1
#3  0x00000000 in ?? ()
No symbol table info available.

thread number 2 is suspicious:

(gdb) info threads
* 8 LWP 100183  0x282ec3cb in kse_thr_interrupt () at kse_thr_interrupt.S:2
  7 Thread 7 (runnable)  avi_update_header (AVI=0xa43d000) at avilib.c:823
  6 Thread 6 (LWP 100155)  0x282ec3ab in kse_release () at kse_release.S:2
  5 Thread 5 (sleeping)  0x282e42b7 in _thr_sched_switch_unlocked (curthread=0x80a6400) at pthread_md.h:232
  4 Thread 4 (sleeping)  0x282e42b7 in _thr_sched_switch_unlocked (curthread=0x80a6600) at pthread_md.h:232
  3 Thread 3 (sleeping)  0x282e42b7 in _thr_sched_switch_unlocked (curthread=0x80a6800) at pthread_md.h:232
  2 Thread 2 (runnable)  0x283dfc08 in resample_flow (flowi=0x284616c0 "", isamp=1764, flowo=0x284de6c0 "") at resample.c:866
  1 Thread 1 (runnable)  _ctx_start () at /usr/varios/src/lib/libc/i386/gen/_ctx_start.S:42

(gdb) thread 2
[Switching to thread 2 (Thread 2 (runnable))]#0  0x283dfc08 in resample_flow (flowi=0x284616c0 "", isamp=1764, flowo=0x284de6c0 "")
    at resample.c:866
866	{
Current language:  auto; currently c

(gdb) info args
flowi = 0x284616c0 ""
isamp = 1764
flowo = 0x284de6c0 ""

(gdb) l resample.c:864,890
864
865	int resample_flow(char *flowi, int isamp, char *flowo)
866	{
867		short *wordp, *iword, *oword;
868		LONG irbuf[MY_BUFSIZE/2];
869		LONG ilbuf[MY_BUFSIZE/2];
870		int osamp, osampdef, i;
871
872		iword=(short *)flowi;
873		oword=(short *)flowo;
874		osampdef=reffp->outinfo.rate>>2;
875		wordp=iword;
876		for (i=0; i<isamp; i++) {
877			irbuf[i]=(((LONG)wordp[i*2])<<16);
878			ilbuf[i]=(((LONG)wordp[i*2+1])<<16);
879		}
880		osamp=osampdef;
881		st_resample_flow(reffp, &irbuf, reffp->obuf, &isamp, &osamp);
882		osamp=osampdef;
883		st_resample_flow(leffp, &ilbuf, leffp->obuf, &isamp, &osamp);
884		wordp=oword;
885		for (i=0; i<osamp; i++) {
886			wordp[i*2]=(int)(reffp->obuf[i]>>16);
887			wordp[i*2+1]=(int)(leffp->obuf[i]>>16);
888		}
889		return(osamp);
890	}


well, now I'm not sure about that I must to do. 
perhaps some experienced member of the list can tell me which is the next step.

Thank you.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42A457A7.95A86273>