-
Notifications
You must be signed in to change notification settings - Fork 7.3k
make test fails miserably on Raspberry Pi (ARM) #4565
Comments
What does fd contain? You should be able to inspect it in gdb:
|
|
Right. You probably need a debug build to get a meaningful backtrace. |
|
I can repro the uv__io_poll failing assert on master branch on my Pi as On Friday, January 11, 2013, Ing. Jan Kaláb wrote:
|
@Pitel Thanks. Interesting that a debug build doesn't produce much of a useful backtrace either. @TooTallNate Can you give me a shell account on your Pi? (Provided it's connected to the Internet.) |
@bnoordhuis Send me your SSH pub key and access shall be granted, provided you promise to not take down http://n8.io :p |
I won't and thanks. :-) My key is here: https://gist.github.com/e8a37ac6983f9fd55d4f |
@bnoordhuis Ok you should be good to go ( |
Change struct uv__epoll_event {
__u32 events;
__u64 data;
} __attribute__((packed)); to
to fix this issue for ARM. |
@hhchristian That doesn't look correct to me. I'm logged into Nate's Pi so we'll find out in a couple of hours -- once node is compiled. |
The "Raspbian" distribution (Debian for Raspberry Pi) defines epoll_event in /usr/include/arm-linux-gnueabihf/sys/epoll.h with the following structure: typedef union epoll_data
{
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;
struct epoll_event
{
uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
}; This looks sililar to the vanilla kernel definition: Libuv uses another definition of epoll_event in /src/unix/linux/syscalls.h struct uv__epoll_event {
__u32 events;
__u64 data;
} __attribute__((packed)); A pointer to this structure is passed with the epoll_ctl() syscall. From my point of view, there's no reason for libuv to use an own definition of this type. The correct solution would be to use the standard epoll_event structure which is defined in "sys/epoll.h". |
It's a workaround for very old distros (or rather, very old versions of glibc) that don't have epoll syscall wrappers. Probably less relevant now that RHEL 4 is EOL. I might remove it one day. e4f2a14 should address this; I couldn't get the debug build to link (it was getting OOM killed) and I'm waiting for the release build to compile but the libuv tests are passing. I was wrong about |
The To get this working on ARM with Big Endian without changing the definition of https://github.com/joyent/libuv/blob/master/src/unix/linux/linux-core.c#L150 https://github.com/joyent/libuv/blob/master/src/unix/linux/linux-core.c#L213 |
[43:54|% 100|+ 175|- 341]: Done
Most of tests fails like this:
It runs much better on my standard x86_64 Ubuntu (just 2 tests failing).
The text was updated successfully, but these errors were encountered: