Repository 32bit  Forum
Repository 64bit  Wiki

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.

Segmentation fault

Messaggioda shock » sab gen 23, 2010 20:46

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 gen 26, 2010 20:38, modificato 2 volte in totale.
Avatar utente
shock
Linux 2.4
Linux 2.4
 
Messaggi: 359
Iscritto il: mer ott 28, 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

Messaggioda 414N » sab gen 23, 2010 21:09

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
414N
Iper Master
Iper Master
 
Messaggi: 2881
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Segmentation fault

Messaggioda shock » sab gen 23, 2010 21:47

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.
Avatar utente
shock
Linux 2.4
Linux 2.4
 
Messaggi: 359
Iscritto il: mer ott 28, 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

Messaggioda metrofox » dom gen 24, 2010 13:24

Il binario si chiama BHO?

il comando di sopra è:

Codice: Seleziona tutto
export LIBGL_DEBUG=verbose
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)

Re: Segmentation fault

Messaggioda shock » dom gen 24, 2010 14:12

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
shock
Linux 2.4
Linux 2.4
 
Messaggi: 359
Iscritto il: mer ott 28, 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

Messaggioda 414N » dom gen 24, 2010 14:31

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
414N
Iper Master
Iper Master
 
Messaggi: 2881
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Segmentation fault

Messaggioda ZeroUno » dom gen 24, 2010 17:36

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
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4394
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: Segmentation fault

Messaggioda metrofox » dom gen 24, 2010 19:49

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
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)

Re: Segmentation fault

Messaggioda shock » dom gen 24, 2010 21:11

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
shock
Linux 2.4
Linux 2.4
 
Messaggi: 359
Iscritto il: mer ott 28, 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

Messaggioda zoros » dom gen 24, 2010 21:43

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 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Re: Segmentation fault

Messaggioda zoros » dom gen 24, 2010 22:19

a scanso di equivoci, io avrei risposto al thread di cui sotto:
shock-post.png
shock-post.png (24.43 KiB) Osservato 379 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
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Re: Segmentation fault

Messaggioda shock » dom gen 24, 2010 22:34

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
shock
Linux 2.4
Linux 2.4
 
Messaggi: 359
Iscritto il: mer ott 28, 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

Messaggioda zoros » dom gen 24, 2010 22:45

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
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Re: Segmentation fault

Messaggioda shock » dom gen 24, 2010 23:01

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
shock
Linux 2.4
Linux 2.4
 
Messaggi: 359
Iscritto il: mer ott 28, 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

Messaggioda 414N » dom gen 24, 2010 23:31

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 19 volte
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2881
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Prossimo

Torna a Slackware64

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti