# [Risolto] find : errore

## ciro64

Buongiorno.

usando find, ottengo in alcuni casi errore:

Per esempio come root:

```

c2qyt ~ # find / -iname *cfg*

/media/Gentoo Linux amd64 20090716/isolinux/isolinux.cfg

/media/sysrcd-1.2.3/isolinux/isolinux.cfg

find: ftsfind.c:477: consider_visiting: Assertion `ent->fts_info == 11 || state.type != 0' failed.

Aborted

```

Qulache idea in merito ?

Grazie.Last edited by ciro64 on Sat Aug 29, 2009 4:28 pm; edited 1 time in total

----------

## cloc3

i due programmi sono molto diversi, e non è corretto confrontare il loro output in questo modo.

locate, infatti, è un symlink a slocate che, a sua volta, è un frontend ad updatedb: un database che viene aggiornato circa una volta al giorno (secondo le impostazioni locali).

find, invece, accede direttamente al file system al momento della chiamata.

può essere che i  file che stai cercando esistessero al momento del database ma non esistano più al momento della chiamata.

l'errore di find che segnali, però, fa pensare ad una complicazione ulteriore.

la ricerca sulla cartella /home che hai impostato, si estende a un albero molto vasto, che, tra le altre cose, si allarga a tutti i symlink delle cartelle speciali dei singoli utenti (per esempio ~/.kde/tmp-<localhost>). per qualche motivo che è impossibile identificare da qui, la ricerca finisce prematuramente.

se lo desideri, puoi provare a fare un'indagine con strace:

```

strace -f -e open find /home -iname *nvidia*

```

se tutto va bene, dovresti ottenere maggiori informazioni sul punto dove si arresta.

----------

## ciro64

Grazie Davvero per le risposte  :Smile: 

```

c2qyt ~ #  strace -f -e open find /home -iname *nvidia* 

open("/etc/ld.so.cache", O_RDONLY)      = 3

open("/lib/librt.so.1", O_RDONLY)       = 3

open("/lib/libm.so.6", O_RDONLY)        = 3

open("/lib/libc.so.6", O_RDONLY)        = 3

open("/lib/libpthread.so.0", O_RDONLY)  = 3

open(".", O_RDONLY)                     = 3

find: ftsfind.c:477: consider_visiting: Assertion `ent->fts_info == 11 || state.type != 0' failed.

--- SIGABRT (Aborted) @ 0 (0) ---

+++ killed by SIGABRT +++

```

Invece se lo do da utente è tutto ok; anche se allargo la ricrca con find / -iname *nvidia* (chiaramente ottengo diversi "permission denied") però non ottengo l'eerore sopracitato.

non riesco ad focalizzare in queali situazioni ottengo questo errore e perchè.

Edit: facendo varie prove, il problema si presenta solo quando uso find / -name come root.

Come utente, non succede.

----------

## cloc3

 *ciro64 wrote:*   

> 
> 
> ```
> 
> open(".", O_RDONLY)                     = 3
> ...

 

questo è proprio strano.

cerca di aprire la cartella corrente (ma perché?) e poi si stampa.

da qualche parte, c'è un symlink balordo che lo inganna?

magari nascosto all'utente normale da qualche limitazione di accesso.

prova anche lo strace senza il -e open (anche se l'ouput diventa enorme)

----------

## ciro64

Lo posto tutto; se mi dite di accorciarlo, lo accorcerò alle righe più interessanti difatti è proprio lunghetto ho dovuto reindirizzare le stderr in un file testo.

```

.........................[Cut].....................................

close(4)                                = 0

dup(7)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

newfstatat(7, "gnome-session", {st_mode=03, st_size=17592186044416, ...}, AT_SYMLINK_NOFOLLOW) = 0

openat(7, "gnome-session", O_RDONLY)    = 6

fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0

fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)

fcntl(6, F_SETFD, FD_CLOEXEC)           = 0

fcntl(6, F_DUPFD, 3)                    = 8

getdents(6, /* 3 entries */, 4096)      = 88

getdents(6, /* 0 entries */, 4096)      = 0

close(6)                                = 0

newfstatat(8, "saved-session", {st_mode=02, st_size=17592186044416, ...}, AT_SYMLINK_NOFOLLOW) = 0

close(4)                                = 0

dup(8)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

openat(8, "saved-session", O_RDONLY)    = 6

fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0

fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)

fcntl(6, F_SETFD, FD_CLOEXEC)           = 0

fcntl(6, F_DUPFD, 3)                    = 9

getdents(6, /* 2 entries */, 4096)      = 48

getdents(6, /* 0 entries */, 4096)      = 0

close(6)                                = 0

close(9)                                = 0

close(4)                                = 0

dup(8)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

close(8)                                = 0

close(4)                                = 0

dup(7)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

newfstatat(7, "autostart", {st_mode=02, st_size=17592186044416, ...}, AT_SYMLINK_NOFOLLOW) = 0

openat(7, "autostart", O_RDONLY)        = 6

fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0

fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)

fcntl(6, F_SETFD, FD_CLOEXEC)           = 0

fcntl(6, F_DUPFD, 3)                    = 8

getdents(6, /* 4 entries */, 4096)      = 160

getdents(6, /* 0 entries */, 4096)      = 0

close(6)                                = 0

close(4)                                = 0

dup(8)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

close(8)                                = 0

close(4)                                = 0

dup(7)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

close(7)                                = 0

close(4)                                = 0

dup(5)                                  = 4

fcntl(4, F_GETFD)                       = 0

fcntl(4, F_SETFD, FD_CLOEXEC)           = 0

newfstatat(5, ".gvfs", 0x80a700, AT_SYMLINK_NOFOLLOW) = -1 EACCES (Permission denied)

lstat(".gvfs", 0x7fffac7d5370)          = -1 ENOENT (No such file or directory)

write(2, "find: ftsfind.c:477: consider_vis"..., 99find: ftsfind.c:477: consider_visiting: Assertion `ent->fts_info == 11 || state.type != 0' failed.

) = 99

rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0

tgkill(22986, 22986, SIGABRT)           = 0

--- SIGABRT (Aborted) @ 0 (0) ---

+++ killed by SIGABRT +++

```

Last edited by ciro64 on Wed Aug 26, 2009 2:21 pm; edited 1 time in total

----------

## cloc3

 :Laughing: 

non che ci capisca gran ché.

ma sembra che non gli piaccia quel .gvfs

----------

## ciro64

Ho dato una "sforbiciata" al post precedente. 

Comunque non mi pare un problema grave, per carità  :Smile: 

Eppure, non sono andato a toccare ifles di configurazione importanti.

Più che altro per arrivare ad una miglior comprensione del sistema.

Non so; magari occore "attivare" qualche use flag particolare ?

----------

## cloc3

 *ciro64 wrote:*   

> 
> 
> Comunque non mi pare un problema grave, per carità 
> 
> 

 

non è questo il fatto.

con tutta probabilità, il comportamento di find è corretto, mentre esiste qualcosa nel tuo filesystem - e forse di corrotto - che lo trae in inganno.

bisognerebbe percorrere con pazienza l'albero della cartella /home fino a trovarlo (magari a pezzetti, con ricerche nelle singolo sottocartelle).

find è un applicazione di sistema. non è che possa dipendere molto dalle USE flag:

```

cloc3@s939 ~ $ qfile /usr/bin/find

sys-apps/findutils (/usr/bin/find)

cloc3@s939 ~ $ eix findutils

[I] sys-apps/findutils

     Available versions:  4.4.0 ~4.5.2 ~4.5.3 ~4.5.3-r1 ~4.5.4 ~4.5.5 {nls selinux static}

     Installed versions:  4.4.0(14:56:24 11/03/2009)(nls -selinux -static)

     Homepage:            http://www.gnu.org/software/findutils/

     Description:         GNU utilities for finding files

```

----------

## ciro64

Facendo  un po' di prove, il problema si presenta unicamente con sessione Gnome avviata; con kde per esempio funziona tutto perfettamente.

La rosa dei sospetti si sta restringendo.

Comunque sto usando funtoo:

```

 sys-apps/findutils

      Latest version available: 4.5.5

      Latest version installed: 4.5.5

```

anche provando ad aggiungere un nuovo user il problema persiste sempre con Gnome session.

Edit:

Ho provato a riformattare addirittura la mia /home ed eliminare quindi ricreare il mio user (tanto ancora non avevo molti files)

non e' pero' servito a risolvere.

Il problema si verifica con sessione Gnome.

Non so proprio che pensare in merito.   :Rolling Eyes: 

----------

## zolar czakl

Non e' un errore di find: e' proprio root che non può accedere (a sessione avviata).

Non uso gnome ma dovrebbe dipendere da gvfs-fuse-daemon e dal suo legame con fuse.

Questa dovrebbe essere una parziale soluzione: dipende da te stabilire se e' accettabile.

http://www.pubbs.net/fedora/200908/1947

----------

## ciro64

Ho provato come indicato nel link a creare il file /etc/X11/xinit/xinitrc.d/00-gvfs-disable-fuse.sh (con un chmod +x chiaramente)

Ma mi da ancora l'errore.

Comunque non è un problema.

Riporto allo stato originale.

Grazie mille per avermi dato chiarimenti.

In questo caso, devo mettere comunque "Risolto" oppure no ?

Un Saluto.

----------

## zolar czakl

A sessione avviata risulta montata quella dir?

Prova se questo funziona:

```
echo GVFS_DISABLE_FUSE=1  > /etc/env.d/99gvfs

eselect env update
```

Ripeti il login come utente e fai ripartire gnome (echo $GVFS_DISABLE_FUSE per verifica).

Non conosco il comportamento di gnome ma prima di provare

verificherei che non sia rimasto qualche componente attivo (tipo lo stesso gvfs o gconf ).

----------

## ciro64

Eseguito; riavvio gdm e come conferma:

```

$ echo $GVFS_DISABLE_FUSE 

1

```

E..... find / -iname ora funziona correttamente  :Smile: 

Grande !!!

Quindi, in pratica mi hai fato "adattare" a Gentoo (Funtoo) quanto indicato per Fed11 ?

Sei un Mago. Grazie 1000000.

Ciao.

----------

