graphlcd e 64bit e anche 32bit segfault [risolto]

Tutto quello che ha a che fare con i plugins.

Moderatori: ragno, tapino, alez, zulu, davidea

Rispondi
Avatar utente
von fritz
Messaggi: 1479
Iscritto il: 18 gen 2007, 23:33

graphlcd e 64bit e anche 32bit segfault [risolto]

Messaggio da von fritz »

Hello

in due parole, :) su una yavdr 32 bit nessun problema, invece su una arch 64bit un bel segfault :|
intanto per essere "sicuro" ho compilato una vdr senza patch da sorgenti con il graphlcd-pluggo ultima versione (git) sul portatile (64bit) con penna usb-dvbt.
avviato vdr con:
./vdr --userdump -v /home/fritz/GLCD/video -P'graphlcd -c /home/fritz/GLCD/video'
:)
risultato :
Segmentation fault (core dumped)
analizzato con gdb :

Codice: Seleziona tutto

Core was generated by `./vdr --userdump -v /home/fritz/GLCD/video -Pgraphlcd -c /home/fritz/GLCD/video'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f526c51f249 in free () from /lib/libc.so.6
(gdb) bt
#0  0x00007f526c51f249 in free () from /lib/libc.so.6
#1  0x00007f526a907679 in GLCD::cDriverHD61830::DeInit() () from /usr/lib/libglcddrivers.so.1
#2  0x00007f526ab34a25 in cPluginGraphLCD::~cPluginGraphLCD (this=0x2116ed0, __in_chrg=<value optimized out>) at plugin.c:71
#3  0x00007f526ab34af9 in cPluginGraphLCD::~cPluginGraphLCD (this=0x2116ed0, __in_chrg=<value optimized out>) at plugin.c:73
#4  0x00000000004a5e5e in cDll::~cDll (this=0x203ffa0, __in_chrg=<value optimized out>) at plugin.c:165
#5  0x00000000004a5eb9 in cDll::~cDll (this=0x203ffa0, __in_chrg=<value optimized out>) at plugin.c:170
#6  0x00000000004d093b in cListBase::Del (this=0x7ffff4b62f60, Object=<value optimized out>, DeleteObject=<value optimized out>) at tools.c:1808
#7  0x00000000004a6e9c in cPluginManager::Shutdown (this=0x7ffff4b62f40, Log=true) at plugin.c:489
#8  0x00000000004d23ab in main (argc=<value optimized out>, argv=<value optimized out>) at vdr.c:1314
:(
Intanto, ce qualcuno che usa questo pluggo su una vdrbox a 64bit? :roll:

bye
VDRBOX-HD : in pensione!
ALTRO : freerunner (openmoko) ; nokia n900 ; 2 seagate dockstar, samsung ps64d8000, diversi dispositivi ARM (Allwinner, Amlogic) ;)
Don't feed the trolls non alimentate sistemi proprietari ;)

Linux rulez! :)
Avatar utente
von fritz
Messaggi: 1479
Iscritto il: 18 gen 2007, 23:33

Re: graphlcd e 64bit e anche 32bit segfault [risolto]

Messaggio da von fritz »

Hello
von fritz ha scritto:Hello

Intanto, ce qualcuno che usa questo pluggo su una vdrbox a 64bit? :roll:

bye
Si, io lo uso :) pero' non te lo dico come ho risolto :lingua:

:lol:
VDRBOX-HD : in pensione!
ALTRO : freerunner (openmoko) ; nokia n900 ; 2 seagate dockstar, samsung ps64d8000, diversi dispositivi ARM (Allwinner, Amlogic) ;)
Don't feed the trolls non alimentate sistemi proprietari ;)

Linux rulez! :)
Avatar utente
von fritz
Messaggi: 1479
Iscritto il: 18 gen 2007, 23:33

Re: graphlcd e 64bit e anche 32bit segfault [risolto]

Messaggio da von fritz »

Hello

Ma guarda questo.... :lol:

intanto il segfault lo causava :

Codice: Seleziona tutto

#0  0x00007fc86d17f249 in free () from /lib/libc.so.6
#1  0x00007fc86b5676d9 in GLCD::cDriverHD61830::DeInit (this=0x7fc86400bb20) at hd61830.c:178
cioe' la funzione DeInit nel driver in hd61830.c alla riga 178:
parte del codice :

Codice: Seleziona tutto

    // free lcd array (wanted state)
    if (newLCD)
    {
        for (x = 0; x < (width + 7) / 8; x++)
        {
            delete[] newLCD[x];
        }
        delete[] newLCD;
    }
come ho risolto?
semplice evitare che venga "chiamata" la funzione DeInit. :D
come? installando il pluggo "come si deve" :lol: con tutte le conf e permessi a posto! :oops:
[Jan 25 17:59:56 localhost vdr: [3612] initializing plugin: graphlcd (0.1.9-pre (git 20110123)): Output to graphic LCD
Jan 25 17:59:56 localhost vdr: graphlcd: WWARNING: cannot open '/var/lib/vdr/plugins/graphlcd/channels.alias
Jan 25 17:59:56 localhost vdr: [3612] graphlcd plugin: ERROR: Could not load /var/lib/vdr/plugins/graphlcd/fonts.conf!
Jan 25 17:59:56 localhost vdr: [3616] tuner on frontend 0/0 thread started (pid=3612, tid=3616)
Jan 25 17:59:56 localhost vdr: [3617] section handler thread started (pid=3612, tid=3617)
Jan 25 17:59:56 localhost vdr: [3617] section handler thread ended (pid=3612, tid=3617)
Jan 25 17:59:57 localhost vdr: [3616] tuner on frontend 0/0 thread ended (pid=3612, tid=3616)
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: loadepg
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: femon
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: dvbsddevice
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: signal
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: xineliboutput
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: text2skin
Jan 25 17:59:57 localhost kernel: vdr[3612] general protection ip:7f995f76e249 sp:7fff7999c090 error:0 in libc-2.12.2.so[7f995f6f8000+153000]
Jan 25 17:59:57 localhost vdr: [3612] deleting plugin: wirbelscan
una volta "sistemate" le .conf e i permessi e partito senza prob.
sulla yavdr non dava problemi essendo che si installa da pacchetto preconfigurato.
mi e venuto il dubbio quando mi dava lo stesso errore (segfault) sulla yavdr compilando e avviando a manina.

comunque resta il fatto che quella funzione DeInit e buggosa :si: :lingua:

bye
VDRBOX-HD : in pensione!
ALTRO : freerunner (openmoko) ; nokia n900 ; 2 seagate dockstar, samsung ps64d8000, diversi dispositivi ARM (Allwinner, Amlogic) ;)
Don't feed the trolls non alimentate sistemi proprietari ;)

Linux rulez! :)
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: graphlcd e 64bit e anche 32bit segfault [risolto]

Messaggio da alez »

Ma de init è quella funzione che toglie un pluggo quando questo ha qualcosa che non quadra?

Comunque grazie :D
Ciao alez
Avatar utente
von fritz
Messaggi: 1479
Iscritto il: 18 gen 2007, 23:33

Re: graphlcd e 64bit e anche 32bit segfault [risolto]

Messaggio da von fritz »

Hello

posto la parte completa:

Codice: Seleziona tutto

int cDriverHD61830::DeInit()
{
    int x;

    // free lcd array (wanted state)
    if (newLCD)
    {
        for (x = 0; x < (width + 7) / 8; x++)
        {
            delete[] newLCD[x];
        }
        delete[] newLCD;
    }
    // free lcd array (current state)
    if (oldLCD)
    {
        for (x = 0; x < (width + 7) / 8; x++)
        {
            delete[] oldLCD[x];
        }
        delete[] oldLCD;
    }
    if (port->Close() != 0)
        return -1;
    return 0;
}
bye

ps. nessuno ha fatto/convertito loghi "nostrani" in formato .glcd ? :?
VDRBOX-HD : in pensione!
ALTRO : freerunner (openmoko) ; nokia n900 ; 2 seagate dockstar, samsung ps64d8000, diversi dispositivi ARM (Allwinner, Amlogic) ;)
Don't feed the trolls non alimentate sistemi proprietari ;)

Linux rulez! :)
Rispondi