linux-mips
[Top] [All Lists]

Re: Failing readdir() on 3.6 (was: Failing INOTIFY in 3.6.x?)

To: linux-mips@linux-mips.org
Subject: Re: Failing readdir() on 3.6 (was: Failing INOTIFY in 3.6.x?)
From: Lluís Batlle i Rossell <viric@viric.name>
Date: Mon, 5 Nov 2012 08:32:21 +0100
In-reply-to: <20121104232119.GF2052@vicerveza.homeunix.net>
List-archive: <http://www.linux-mips.org/archives/linux-mips/>
List-help: <mailto:ecartis@linux-mips.org?Subject=help>
List-id: linux-mips <linux-mips.eddie.linux-mips.org>
List-owner: <mailto:ralf@linux-mips.org>
List-post: <mailto:linux-mips@linux-mips.org>
List-software: Ecartis version 1.0.0
List-subscribe: <mailto:ecartis@linux-mips.org?subject=subscribe%20linux-mips>
List-unsubscribe: <mailto:ecartis@linux-mips.org?subject=unsubscribe%20linux-mips>
References: <20121102183828.GX2052@vicerveza.homeunix.net> <20121104232119.GF2052@vicerveza.homeunix.net>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.20 (2009-06-14)
This same issue below happens to me in 3.5.7 too. So, the change is somewhere
between 3.4 and 3.5.

Regards,
Lluís.

On Mon, Nov 05, 2012 at 12:21:19AM +0100, Lluís Batlle i Rossell wrote:
> I've investigated better the issue.
> 
> I found that, in 3.4 vs 3.6.4, the behaviour that changed is that of 
> readdir().
> 
> Using the same userland binaries, I've run a little program in both kernels:
> -------- prova.c
> #include <sys/types.h>
> #include <dirent.h>
> 
> int main() {
>         DIR *d = opendir("/etc/init");
> 
>         if (d == NULL) {
>                 fprintf(stderr, "d NULL\n");
>                 return -1;
>         }
> 
>         struct dirent *ent;
>         ent = readdir(d);
> 
>         if (ent == NULL) {
>                 fprintf(stderr, "ent NULL\n");
>                 return -1;
>         }
> }
> -----------
> 
> 
> This program does not print anything on 3.4, but on 3.6, it prints "ent NULL".
> 
> In both cases, /etc/init is full of symlinks, like this (from a script session
> in 3.6.4):
> -------
> S'ha iniciat l'execució de script a dl 05 nov 2012 00:16:53 CET
> sh-4.2# ./prova
> ent NULL
> sh-4.2# ls -ld /etc/init
> drwxr-xr-x 2 root root 4096  5 nov 00:12 /etc/init
> sh-4.2# ls -l /etc/init
> total 0
> lrwxrwxrwx 1 root root 25  5 nov 00:12 atd.conf -> /etc/static/init/atd.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 boot.conf -> /etc/static/init/boot.conf
> lrwxrwxrwx 1 root root 40  5 nov 00:12 control-alt-delete.conf -> 
> /etc/static/init/control-alt-delete.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 cron.conf -> /etc/static/init/cron.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 dbus.conf -> /etc/static/init/dbus.conf
> lrwxrwxrwx 1 root root 28  5 nov 00:12 dhcpcd.conf -> 
> /etc/static/init/dhcpcd.conf
> lrwxrwxrwx 1 root root 37  5 nov 00:12 emergency-shell.conf -> 
> /etc/static/init/emergency-shell.conf
> lrwxrwxrwx 1 root root 37  5 nov 00:12 invalidate-nscd.conf -> 
> /etc/static/init/invalidate-nscd.conf
> lrwxrwxrwx 1 root root 25  5 nov 00:12 kbd.conf -> /etc/static/init/kbd.conf
> lrwxrwxrwx 1 root root 27  5 nov 00:12 klogd.conf -> 
> /etc/static/init/klogd.conf
> lrwxrwxrwx 1 root root 25  5 nov 00:12 lvm.conf -> /etc/static/init/lvm.conf
> lrwxrwxrwx 1 root root 30  5 nov 00:12 mountall.conf -> 
> /etc/static/init/mountall.conf
> lrwxrwxrwx 1 root root 36  5 nov 00:12 mountall-ip-up.conf -> 
> /etc/static/init/mountall-ip-up.conf
> lrwxrwxrwx 1 root root 34  5 nov 00:12 mount-failed.conf -> 
> /etc/static/init/mount-failed.conf
> lrwxrwxrwx 1 root root 32  5 nov 00:12 networking.conf -> 
> /etc/static/init/networking.conf
> lrwxrwxrwx 1 root root 40  5 nov 00:12 network-interfaces.conf -> 
> /etc/static/init/network-interfaces.conf
> lrwxrwxrwx 1 root root 32  5 nov 00:12 nix-daemon.conf -> 
> /etc/static/init/nix-daemon.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 nscd.conf -> /etc/static/init/nscd.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 ntpd.conf -> /etc/static/init/ntpd.conf
> lrwxrwxrwx 1 root root 30  5 nov 00:12 runlevel.conf -> 
> /etc/static/init/runlevel.conf
> lrwxrwxrwx 1 root root 30  5 nov 00:12 shutdown.conf -> 
> /etc/static/init/shutdown.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 sshd.conf -> /etc/static/init/sshd.conf
> lrwxrwxrwx 1 root root 29  5 nov 00:12 syslogd.conf -> 
> /etc/static/init/syslogd.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 tty1.conf -> /etc/static/init/tty1.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 tty2.conf -> /etc/static/init/tty2.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 tty3.conf -> /etc/static/init/tty3.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 tty4.conf -> /etc/static/init/tty4.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 tty5.conf -> /etc/static/init/tty5.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 tty6.conf -> /etc/static/init/tty6.conf
> lrwxrwxrwx 1 root root 26  5 nov 00:12 udev.conf -> /etc/static/init/udev.conf
> lrwxrwxrwx 1 root root 33  5 nov 00:12 udevtrigger.conf -> 
> /etc/static/init/udevtrigger.conf
> sh-4.2# exit
> 
> S'ha finalitzat l'execució de script a dl 05 nov 2012 00:17:22 CET
> --------
> 
> 
> 
> 
> On Fri, Nov 02, 2012 at 07:38:28PM +0100, Lluís Batlle i Rossell wrote:
> > Hello,
> > 
> > updating my kernel from 3.4.2 to 3.6.4, I've noticed that upstart deadlocks 
> > at
> > the very start. Stracing, I think it has to do with INOTIFY, because it
> > deadlocks very early and little more has been done then.
> > 
> > Going 'back' to 3.4.16, makes upstart work fine. I've not tested middle 
> > kernels.
> > 
> > I've seen this only on the fuloong minipc (mips n64), but I've done similar
> > steps with the same distributions on armv5tel, i686 and x86_64, and there 
> > all
> > works fine.
> > 
> > Does anybody know of anything broken around inotify, between 3.4 and 3.6 
> > linux
> > mips?
> > 
> > Any suggestion on what kernel change could have related to this, and so, 
> > get a
> > clue about what middle version to test?
> > 
> > Regards,
> > Lluís.

<Prev in Thread] Current Thread [Next in Thread>