Segmentation fault

Se avete problemi con l'installazione e la configurazione di Slackware64 postate qui. Non usate questo forum per argomenti che trattano la Slackware32 o generali... per quelli usate rispettivamente il forum Slackware e Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
shock
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mer 28 ott 2009, 18:47
Nome Cognome: Ivan
Slackware: 13.1 x86_64
Kernel: 2.6.33.4-huge-smp
Desktop: KDE 4.4.3

Segmentation fault

Messaggio da shock »

Salve, avevo un gioco da far funzionare...necessitava di alcune librerie a 32 bit.Le ho installate.
Ora se lo apro appare una schermata nera per una frazione di secondo e poi si chiude.Se lo apro da shell mi da l'errore "Segmentation fault".
Ho letto riguardo questo errore, ma non capisco cosa c'entri con questo gioco.

Wikipedia dice:

"Un errore di segmentazione (in inglese segmentation fault, spesso abbreviato in segfault) è una particolare condizione di errore che può verificarsi durante l'esecuzione di un programma per computer. Un errore di segmentazione ha luogo quando un programma tenta di accedere ad una posizione di memoria alla quale non gli è permesso accedere, oppure quando tenta di accedervi in una maniera che non gli è concessa (ad esempio, scrivere su una posizione di sola lettura, oppure sovrascrivere parte del sistema operativo)."

Interessante è anche questo : http://www.cyberciti.biz/tips/segmentat ... -unix.html

Come posso risolvere?

Ciao a tutti.

Offtopic: Chiedo scusa per aver aperto un altro topic quando di questa cosa si è già parlato qui viewtopic.php?f=51&t=31079 solo che voglio fare una cosa piu ordinata e pulita
Ultima modifica di shock il mar 26 gen 2010, 20:38, modificato 2 volte in totale.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Segmentation fault

Messaggio da 414N »

Se magari ti scucissi un po' di più e ci dicessi il nome del gioco in questione, magari qualcosa si potrebbe capire.
Il segmentation fault è un errore che può avere svariate cause scatenanti, percui risulta molto difficile risalirvi senza molte altre informazioni.
Tanto per darti un'idea, può essere un errore di programmazione, ma anche un banale strip (intendo il rimuovere informazioni superflue dagli eseguibili tramite l'omonimo comando) dei binari può scatenarlo (vedi questo mio topic), per non parlare di dati corrotti sul disco fisso.
Tanto per capire se è un problema di grafica o meno, prova a lanciare il gioco così

Codice: Seleziona tutto

export LIBGL_DEBUG=verbose
/path/del/exe/del/gioco
Riporta eventuali messaggi di errore che compaiono (tipo librerie impossibili da aprire etc.).
Nel caso non compaia alcun messaggio di errore, uno stack trace del lancio dell'applicazione potrebbe essere utile. Lancia il programma con

Codice: Seleziona tutto

strace /path/del/exe/del/gioco
Mi raccomando, racchiudi tutto l'output che intendi riportare tra i tag code.

Avatar utente
shock
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mer 28 ott 2009, 18:47
Nome Cognome: Ivan
Slackware: 13.1 x86_64
Kernel: 2.6.33.4-huge-smp
Desktop: KDE 4.4.3

Re: Segmentation fault

Messaggio da shock »

Questo è l'output di strace :

Codice: Seleziona tutto

root@darkstar:~# strace /root/BOH
execve("/root/BOH", ["/root/BOH"], [/* 56 vars */]) = -1 EACCES (Permission denied)
dup(2)                                                  = 3
fcntl(3, F_GETFL)                                 = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe58335b000
lseek(3, 0, SEEK_CUR)                       = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Permission denied\n"..., 32strace: exec: Permission denied
) = 32
close(3)                                                = 0
munmap(0x7fe58335b000, 4096)            = 0
exit_group(1)                                         = ?
L'altro comando non lo ho ben capito.

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Segmentation fault

Messaggio da metrofox »

Il binario si chiama BHO?

il comando di sopra è:

Codice: Seleziona tutto

export LIBGL_DEBUG=verbose

Avatar utente
shock
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mer 28 ott 2009, 18:47
Nome Cognome: Ivan
Slackware: 13.1 x86_64
Kernel: 2.6.33.4-huge-smp
Desktop: KDE 4.4.3

Re: Segmentation fault

Messaggio da shock »

Si , il gioco si chiama proprio BOH http://www.bohthegame.com/ (ne approfitto per farne pubblicità, dato che è un gioco tutto italiano :D )

Codice: Seleziona tutto

root@darkstar:~# strace /root/BOH
execve("/root/BOH", ["/root/BOH"], [/* 56 vars */]) = -1 EACCES (Permission denied)
dup(2)                                                  = 3
fcntl(3, F_GETFL)                                 = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe58335b000
lseek(3, 0, SEEK_CUR)                       = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Permission denied\n"..., 32strace: exec: Permission denied
) = 32
close(3)                                                = 0
munmap(0x7fe58335b000, 4096)            = 0
exit_group(1)                                         = ?
Ho riscritto il codice per far notare (cosa che sicuramente avrete gia fatto), che al 2°rigo c'è scritto PERMISSION DENIED...cosa non è permesso?

Riguardo l'altro comando, non ho capito come devo scriverlo...il primo era "strace /root/BOH" ed il secondo ??

Codice: Seleziona tutto

root@darkstar:~# export LIBGL_DEBUG=verbose
root@darkstar:~# export LIBGL_DEBUG=verbose /root/BOH
bash: export: `/root/BOH': not a valid identifier
root@darkstar:~#
Ciao.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Segmentation fault

Messaggio da 414N »

Devi semplicemente eseguire la sequenza che ti avevo scritto. l'export serve a impostare una variabile d'ambiente, dopodiché devi lanciare normalmente l'applicazione.
Puoi fare tutto in una riga sola:

Codice: Seleziona tutto

LIBGL_DEBUG=verbose /root/BOH
Il problema dei permessi è forse causato dal fatto che tenti di lanciare il programma come utente normale e non root, visto che l'hai installato in /root.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Segmentation fault

Messaggio da ZeroUno »

Può sembrare scontato, ma io la butto lì:

Codice: Seleziona tutto

# chmod +x /root/BOH
Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Segmentation fault

Messaggio da metrofox »

No, lui usa sempre l'account root quindi non è un permesso, allora dai i permessi di esecuzione con chmod +x /root/BHO, imposta la variabile d'ambiente e continua :-)

Avatar utente
shock
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mer 28 ott 2009, 18:47
Nome Cognome: Ivan
Slackware: 13.1 x86_64
Kernel: 2.6.33.4-huge-smp
Desktop: KDE 4.4.3

Re: Segmentation fault

Messaggio da shock »

L'assegnazione dei permessi funziona normalmente.
La prima volta ho avuto questo risultato :

Codice: Seleziona tutto

root@darkstar:~# LIBGL_DEBUG=verbose /root/BOH
bash: /root/BOH: is a directory
Poi ho fatto cosi :

Codice: Seleziona tutto

root@darkstar:~# cd /root/B*
root@darkstar:~/BOH# LIBGL_DEBUG=verbose ./BOH
Segmentation fault
come potete vedere, il problema persiste (sempre che io abbia dato bene il comando [il gioco io lo avvio cosi----->cd /root/BOH poi ./BOH]

Ciao e grazie.

Avatar utente
zoros
Linux 4.x
Linux 4.x
Messaggi: 1361
Iscritto il: lun 28 mag 2007, 22:51
Nome Cognome: Fabio`Zorba`
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)
Località: Gorizia
Contatta:

Re: Segmentation fault

Messaggio da zoros »

se manca l'emulazione (o supporto ?) a 32bit nel kernel è come se i programmi a 32bit non esistessero ...
vorrei riavere le mie firme ...

Avatar utente
zoros
Linux 4.x
Linux 4.x
Messaggi: 1361
Iscritto il: lun 28 mag 2007, 22:51
Nome Cognome: Fabio`Zorba`
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)
Località: Gorizia
Contatta:

Re: Segmentation fault

Messaggio da zoros »

a scanso di equivoci, io avrei risposto al thread di cui sotto:
shock-post.png
shock-post.png (24.43 KiB) Visto 4166 volte
per cui era presumibile anche qualche mancanza nel kernel ... stando al post modificato invece direi proprio di no ...
che scherzi shock :shock: , che shock :lol:

io proverei altre librerie 32bit ... prova quelle di bluewhite64, le scarichi tutte:

Codice: Seleziona tutto

wget -cmnd -A txz  http://mirrors.xservers.ro/bluewhite64/bluewhite64-13.0/extra/ia32-emulation/
Attenzione però: forse prima conviene fare una installazione in una directory locale con:

Codice: Seleziona tutto

installpkg -root /percorso ...
ed esportare questo percorso con LD_LIBRARY_PATH
vorrei riavere le mie firme ...

Avatar utente
shock
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mer 28 ott 2009, 18:47
Nome Cognome: Ivan
Slackware: 13.1 x86_64
Kernel: 2.6.33.4-huge-smp
Desktop: KDE 4.4.3

Re: Segmentation fault

Messaggio da shock »

Si scusami, solo che prima avevo dato i comandi dimendicandomi di aver cancellato la directory :D

Dunque...ho capito tutto del tuo messaggio, tranne questo :
Attenzione però: forse prima conviene fare una installazione in una directory locale con:

Codice: Seleziona tutto

installpkg -root /percorso ...
ed esportare questo percorso con LD_LIBRARY_PATH
Ciao e scusa per lo shock :lol:

Avatar utente
zoros
Linux 4.x
Linux 4.x
Messaggi: 1361
Iscritto il: lun 28 mag 2007, 22:51
Nome Cognome: Fabio`Zorba`
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)
Località: Gorizia
Contatta:

Re: Segmentation fault

Messaggio da zoros »

se scrivi solo installpkg ti spiega cosa significa ... in pratica ti estrae i txz in una directory che hai scelto tu ... e questo accorgimento per evitare di sovrascrivere le librerie che hai già ...

poi il comando:

Codice: Seleziona tutto

export LD_LIBRARY_PATH=/percorso-librerie
rimanendo nella bash dovrebbe fare in modo che il programma cerchi di caricare queste librerie per prime ... ma se non ci riesce cerca nei percorsi classici /lib /usr/lib, ecc. ... quindi una cosa che non modifica il tuo sistema ...
vorrei riavere le mie firme ...

Avatar utente
shock
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mer 28 ott 2009, 18:47
Nome Cognome: Ivan
Slackware: 13.1 x86_64
Kernel: 2.6.33.4-huge-smp
Desktop: KDE 4.4.3

Re: Segmentation fault

Messaggio da shock »

E tu quale percorso mi suggerisci?Io quando ho installato le altre librerie, come puoi vedere dal 4° post di questa discussione viewtopic.php?f=51&t=31079 non le ho installate non in una directory precisa...(se non erro [spero di non aver detto una boiata]).

Ciao.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Segmentation fault

Messaggio da 414N »

shock ha scritto:Si , il gioco si chiama proprio BOH http://www.bohthegame.com/ (ne approfitto per farne pubblicità, dato che è un gioco tutto italiano :D )

Codice: Seleziona tutto

root@darkstar:~# strace /root/BOH
execve("/root/BOH", ["/root/BOH"], [/* 56 vars */]) = -1 EACCES (Permission denied)
dup(2)                                                  = 3
fcntl(3, F_GETFL)                                 = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe58335b000
lseek(3, 0, SEEK_CUR)                       = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Permission denied\n"..., 32strace: exec: Permission denied
) = 32
close(3)                                                = 0
munmap(0x7fe58335b000, 4096)            = 0
exit_group(1)                                         = ?
Ho capito adesso l'errore mostrato qua. Sta tutto nel fatto che hai tentato di lanciare una directory: per forza neanche root ha il permesso...
A giudicare anche dagli altri output che hai riportato e dai dubbi che hai espresso mi sa che stai facendo un macello fuori misura.
Ricapitoliamo: /root/BOH è la directory nella quale hai estratto/installato il gioco, mentre /root/BOH/BOH è l'eseguibile del gioco. È inutile che tenti di lanciare la directory quando ti chiediamo di lanciare il gioco in un certo modo / con certi argomenti. Devi lanciare l'eseguibile.
Detto questo, mi sono scaricato la demo per Linux e ho provato a lanciarla, ma anche a me dà un bel segmentation fault.
Dando un'occhiata alle librerie necessarie al funzionamento tramite ldd non noto alcuna carenza:

Codice: Seleziona tutto

        linux-gate.so.1 =>  (0xffffe000)
        libSDL_mixer-1.2.so.0 => /usr/lib/libSDL_mixer-1.2.so.0 (0xf76f7000)
        libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0xf7644000)
        libm.so.6 => /lib/libm.so.6 (0xf761e000)
        libc.so.6 => /lib/libc.so.6 (0xf74be000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xf74a6000)
        libdl.so.2 => /lib/libdl.so.2 (0xf74a1000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xf7386000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xf7378000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xf7371000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0xf7368000)
        libvga.so.1 => /usr/lib/libvga.so.1 (0xf72e9000)
        /lib/ld-linux.so.2 (0xf7790000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf72d0000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xf72cd000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf72c8000)
mentre dallo stack trace ottenuto con strace ho notato che ricerca anche libvorbis.
Ho usato il pacchetto incluso in Slackware 13.0 (richiede anche libogg) per crearne uno di compatibilità, l'ho installato e la demo è partita tranquillamente.
Te li allego al post. Ti basta installarli con installpkg.
Allegati
pkgs.zip
(227.34 KiB) Scaricato 60 volte

Rispondi