This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug librt/20489] timer_create in compatibility mode on a 64bit big-endian system segfaults
- From: "ian.merin at thalesesec dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Thu, 18 Aug 2016 21:49:30 +0000
- Subject: [Bug librt/20489] timer_create in compatibility mode on a 64bit big-endian system segfaults
- Auto-submitted: auto-generated
- References: <bug-20489-131@http.sourceware.org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=20489
--- Comment #3 from ian.merin at thalesesec dot com ---
(In reply to joseph@codesourcery.com from comment #2)
> On Thu, 18 Aug 2016, ian.merin at thalesesec dot com wrote:
>
> > #if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
>
> > timer_create is redirected to
> > int __timer_create_old (clockid_t clock_id, struct sigevent *evp,
> > int *timerid)
> >
> > however, the signature for timer_create is:
> >
> >
> > int timer_create(clockid_t clockid, struct sigevent *sevp,
> > timer_t *timerid);
> >
> > On this system, timer_t is defined as a 64bit type, while int is defined as a
> > 32 bit type.
>
> And in glibc versions in the relevant interval, timer_t was int. So this
> redirection to a function taking int * is correct; callers of this
> function were compiled against glibc versions at least 2.2 and less than
> 2.3.3, and will be passing a pointer to int.
>
> If there's a problem here, you'll need to explain it further.
I see. It would seem that the problem is not what I thought it was. timer_t is
defined as a void * on the system, and version 2.19 of glibc is being used, yet
we are still entering the version of timer_create meant for a much older
version of glibc.
Thanks, I'll have to investigate further.
--
You are receiving this mail because:
You are on the CC list for the bug.