# Mplayer in framebuffer va in segmentation fault

## Cazzantonio

Uso mplayer in framebuffer compilato con -O2 -march=i686 e basta.

Ho provato con diversi driver video ma mi muore sempre in questo modo (questa è una prova con svgalib):

```
MPlayer dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2007 MPlayer Team

CPU: VIA Esther processor 1200MHz (Family: 6, Model: 10, Stepping: 9)

CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1

Compilato con riconoscimento CPU in esecuzione.

Riproduco foo.divx.avi.

Rilevato formato file AVI!

VIDEO:  [DX50]  704x384  24bpp  25.000 fps  1100.7 kbps (134.4 kbyte/s)

Using ATI R128/Radeon driver, Radeon RV280 with 64MB found.

svgalib 1.9.25

Warning: you have not yet configured your mouse type. If you have no mouse,

setting the type to `none' in /etc/vga/libvga.config will get rid of this

annoying message.

svgalib: Failed to initialize mouse.

==========================================================================

Apertura decoder video: [ffmpeg] FFmpeg's libavcodec codec family

Scelto codec video: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)

==========================================================================

==========================================================================

Apertura decoder audio: [liba52] AC3 decoding with liba52

Using SSE optimized IMDCT transform

Using MMX optimized resampler

AUDIO: 48000 Hz, 2 ch, s16le, 384.0 kbit/25.00% (ratio: 48000->192000)

Scelto codec audio: [a52] afm: liba52 (AC3-liba52)

==========================================================================

AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)

Inizio la riproduzione...

VDec: configurazione chiesta dal vo - 704 x 384 (sp.col. preferito: Planar YV12)

Impossibile trovare uno spazio colore adatto - riprovo con -vf scale...

Apertura filtro video: [scale]

VDec: uso Planar YV12 come sp.colore di uscita (non 0)

Movie-Aspect è 1.83:1 - riscalo per ottenere un rapporto corretto.

[swscaler @ 0x87058c8]SwScaler: using unscaled yuv420p -> rgb32 special converter

VO: [svga] 704x384 => 704x384 BGRA 

[VO_SVGA] Vid_mode: 94, 720x540 32bpp.

[VO_SVGA] Video mode is linear and memcpy could be used for image transfer.

[VO_SVGA] La modalità video ha 16 pagina/e.

[VO_SVGA] Centro l'immagine. Partendo da (0,78)

svgalib: Signal 11: Segmentation fault received. ??% ??% ??,?% 0 0 

MPlayer interrotto dal segnale 11 nel modulo: filter_video 

- MPlayer è stato interrotto per un errore nell'uso della CPU/FPU/RAM.

  Ricompila MPlayer con --enable-debug e crea un backtrace ed un disassemblato

  con 'gdb'. Per dettagli DOCS/HTML/en/bugreports_what.html#bugreports_crash.

- MPlayer è andato in crash. Questo non dovrebbe accadere.

  Può essere un errore nel codice di MPlayer _o_ nei tuoi driver _o_ nella tua

  versione di gcc. Se ritieni sia colpa di MPlayer, per favore leggi

  DOCS/HTML/en/bugreports.html e segui quelle istruzioni. Non possiamo

  aiutarti, e non lo faremo, se non ci dai queste informazioni quando segnali

  un possibile problema.
```

Che posso fare? Ho provato a ricompilare con le ottimizzazioni meno aggressive che conosco ma non cambia niente... avete lumi in merito?

----------

## gutter

A me funziona.

Ti passo un poco di informazioni:

```

gutter@giskard ~ $ emerge --info

Portage 2.1.2.7 (default-linux/x86/2006.1/desktop, gcc-4.1.2, glibc-2.5-r3, 2.6.

20-gentoo-r8 i686)

=================================================================

System uname: 2.6.20-gentoo-r8 i686 Intel(R) Pentium(R) M processor 1.60GHz

Gentoo Base System release 1.12.9

Timestamp of tree: Tue, 26 Jun 2007 07:00:01 +0000

distcc[28825] (dcc_mkdir) ERROR: mkdir /usr/tmp/portage/.distcc//state failed: N

o such file or directory [disabled]

dev-java/java-config: 1.3.7, 2.0.32

dev-lang/python:     2.4.4-r4

dev-python/pycrypto: 2.0.1-r5

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.61

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10

sys-devel/binutils:  2.17

sys-devel/gcc-config: 1.3.16

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.17-r2

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-march=pentium-m -Os -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb"

CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/revdep-rebuild 

/etc/splash /etc/terminfo /etc/texmf/web2c"

CXXFLAGS="-march=pentium-m -Os -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="distlocks metadata-transfer sandbox sfperms strict"

GENTOO_MIRRORS="ftp://gentoo.chem.wisc.edu/gentoo/ http://gentoo.netnitco.net"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress 

--force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/di

stfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/portage/local/layman/sunrise /usr/local/portage"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="X aac acpi alsa bash-completion berkdb bitmap-fonts bzip2 cairo cdr cli cra

cklib crypt curl dbus dga directfb divx doc dri dvd dvdr dvdread eds emacs encod

e ethereal examples fam fbcon ffmpeg firefox gdbm gif gmp gnome gnutls gpm gstre

amer gtk gtk2 hal i8x0 iconv idn imlib isdnlog java jpeg ldap libg++ live mad ma

ildir midi mikmod mmx mmxext motif mozsvg mp3 mpeg mudflap ncurses nls nptl nptl

only nsplugin offensive ogg opengl openmp oss pam pam_console pcmcia pcre pdf pe

rl png pnp ppds pppd python quicktime readline realmedia reflection rtc sdl sess

ion slang spell spl sse sse2 ssl svga tcltk tcpd tetex theora threads tiff truet

ype truetype-fonts trusted type1-fonts usb userlocales vorbis win32codecs x86 xm

l xml2 xorg xprint xscreensaver xv xvid zlib" ALSA_CARDS="intel8x0" ALSA_PCM_PLU

GINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 io

plug ladspa lfloat linear meter mulaw multi null plug rate route share shm softv

ol" ELIBC="glibc" INPUT_DEVICES="synaptics keyboard mouse" KERNEL="linux" LCD_DE

VICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" US

ERLAND="GNU" VIDEO_CARDS="i810"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGU

AS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

```

gutter@giskard ~ $ emerge -pv mplayer svgalib

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild     U ] media-video/mplayer-1.0.20070622-r1 [1.0.20070321] USE="X aac alsa dga directfb doc dvd encode fbcon gif gtk iconv jpeg live mad mmx mmxext mp3 opengl oss png quicktime real rtc sdl sse sse2 svga theora truetype vorbis win32codecs xv xvid xvmc -3dnow -3dnowext -a52 -aalib (-altivec) -amrnb% -amrwb% -arts -bidi -bindist -bl -cddb -cdparanoia -cpudetection -custom-cflags -debug -dts -dv -dvb -dvdnav -enca -esd -ftp -ggi -ipv6 -ivtv -jack -joystick -libcaca -lirc -livecd -lzo -md5sum -mp2 -musepack -nas -openal -pnm -radio -rar -samba -speex -srt -ssse3% -tga -tivo -unicode -v4l -v4l2 -vidix -x264 -xanim -xinerama -zoran (-amr%) (-dvdread%*)" VIDEO_CARDS="-mga -s3virge -tdfx -vesa" 0 kB 

[ebuild   R   ] media-libs/svgalib-1.9.25  USE="-build -no-helper" 964 kB 

Total: 2 packages (1 upgrade, 1 reinstall), Size of downloads: 964 kB

```

Per ultima la porzione di /etc/lilo.conf

```

image = /boot/kernel-2.6.20-gentoo-r8

        root = /dev/hda2

        #append="elevator=cfq video=vesafb:ywrap,mtrr,1024x768-24 splash=verbose,theme:default CONSOLE=/dev/vc/1"

        append="video=vesafb:ywrap,mtrr,1024x768-24 splash=verbose,theme:default CONSOLE=/dev/vc/1"

        initrd = /boot/initrd-2.6

        #root = /devices/discs/disc0/part3

        label = gs-2.6.20-r8

        read-only # read-only for checking
```

----------

## Cazzantonio

Per caso hai mica anche te una scheda radeon?

A me insospettisce anche la riga:

```
Using ATI R128/Radeon driver, Radeon RV280 with 64MB found
```

quando in realtà io non gli ho mai specificato di usare un tale driver (uso un framebuffer col vesafb classico)

----------

## gutter

No, mi spiace ho una intel 855GM.

----------

## djinnZ

OK sono su hardened ed uso ottimizzazioni decisamente più spinte ma ho notato una strana tendenza dei programmi compilati senza --fomit-frame-pointer ai crash ed a fallire del tutto la compilazione su sistemi ottimizzati con questa opzione. Mica ha già provato a compilarlo così (devi abilitare la use custom-cflags ovviamente)?

----------

## Cazzantonio

Scusa hai ragione. Avrei dovuto specificare che ho provato via via con ottimizzazioni sempre più stringate ottenendo sempre lo sesso segfault.

Inizialmente le ottimizzazioni erano queste:

```
CFLAGS="-O2 -march=i686 -mmmx -msse -msse2 -fomit-frame-pointer -pipe"

LDFLAGS="-Wl,-O1"
```

per finire con 

```
CFLAGS="-O2 -march=i686 -pipe"
```

----------

## djinnZ

L'avevo capito ma senza custom-cflags l'automake di mplayer e non l'ebuild ti strippa tutto quello che ci metti ed usa solo il -march.

Hai provato con USE="custom-cflags" e CFLAGS="-O2 -march=i686 -fomit-frame-pointer -fnostrict-aliasing -pipe"?

Oppure sarà qualcuna delle librerie del framebuffer.

----------

## gutter

Alla fine hai trovato il problema?

----------

## Cazzantonio

non ho avuto tempo ultimamente... proverò questa o la prossima settimana

----------

## Cazzantonio

Non è che abbia risolto granché... però ho notato che se emergo anche X mplayer funziona.

Se rimuovo X (senza toccare alcuna use flag) noto che revdep-rebuild mi dice che mplayer è rotto sulle seguenti librerie:

```
libXaw.so.7

libXxf86dga.so.1
```

Boh... non so che dire... forse qualche componente di X è una dipendenza di mplayer indipendentemente dal fatto che giri sotto framebuffero o meno... boh non ho il tempo ne' la voglia di fare prove ma in ogni caso questo mi sembra un punto da cui partire.

----------

