Re: epoll_wait returning EFAULT on Linux 3.2.78 - Mailing list pgsql-hackers

From Andres Freund
Subject Re: epoll_wait returning EFAULT on Linux 3.2.78
Date
Msg-id 20160602170434.kn3qqcefrk7luaq3@alap3.anarazel.de
Whole thread Raw
In response to Re: epoll_wait returning EFAULT on Linux 3.2.78  (Greg Stark <stark@mit.edu>)
Responses Re: epoll_wait returning EFAULT on Linux 3.2.78  (Greg Stark <stark@mit.edu>)
Re: epoll_wait returning EFAULT on Linux 3.2.78  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hi,

On 2016-06-02 17:50:20 +0100, Greg Stark wrote:
> So FYI, it does look like Postgres built in 32-bit mode, at least
> pointers are 32 bits. But I think maxalign might still be enough due
> to doubles being 64 bits.

That makes sense independent of 32 vs. 64 system. Part of the relevant
struct probably require 8 byte alignment:
          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 */          };
 

So using long long alignment seems the best bet here.

Greg, are you writing & testing a patch? Or should I write something for
you to test?

Regards,

Andres



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: epoll_wait returning EFAULT on Linux 3.2.78
Next
From: Greg Stark
Date:
Subject: Re: epoll_wait returning EFAULT on Linux 3.2.78