[Buildroot] [PATCH] udev inotify problem (illegal instruction in arm)

ing. Federico Fuga fuga at studiofuga.com
Thu Nov 15 15:20:18 UTC 2007


Hi,

I finnally traced the problem I had with udev on an em-x270 board, that caused the udevd to crash when executed with an illegal instruction exception.

When executed, udevd crashes in udev_sysdeps.h line 116 (see the gdb dump)

Core was generated by `./udevd'.
Program terminated with signal 4, Illegal instruction.
#0  0x40016cc0 in syscall () from /lib/libc.so.0
(gdb) bt
#0  0x40016cc0 in syscall () from /lib/libc.so.0
#1  0x0000a9b4 in main (argc=<value optimized out>,
    argv=<value optimized out>, envp=<value optimized out>)
    at udev_sysdeps.h:116
(gdb)                                                                                                                                     

we see in that file:

/* needed until /usr/include/sys/inotify.h is working */

#ifdef __UCLIBC__

#include <sys/inotify.h>

#else

static inline int inotify_init(void)

{

        return syscall(__NR_inotify_init);

}

static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)

{

        return syscall(__NR_inotify_add_watch, fd, name, mask);

}

#endif /* __GLIBC__ */

As we can see from the comment, the call through the syscall is needed since glibc is (probably) broken on defining the inotify_init and add_watch function.

But under uclibc it seems to work, (sorry, just few test made), so I propose to change the #ifndef GLIBC to an #ifdef UCLIBC.

So the attached patch.

I will keep you informed about the tests, but at least now udevd doesn't crash anymore.

Regard,

ing. Federico Fuga

-------------- next part --------------
A non-text attachment was scrubbed...
Name: udev-inotify-uclibc.patch
Type: text/x-patch
Size: 315 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20071115/b80044f7/attachment-0003.bin>


More information about the buildroot mailing list