[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#245563: libc6: causes errors on linux-2.6.5 with PaX and CONFIG_PAX_NOVSYSCALL



> What does NOVSYSCALL do?  I doubt it disables the vsyscall properly if
> glibc is trying to use the in-kernel signal trampoline.  Glibc CVS does
> this:
>           if (GLRO(dl_sysinfo_dso) == NULL)
>             {
>               kact.sa_flags |= SA_RESTORER;
> 
>               kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
>                                   ? &restore_rt : &restore);
>             }
> 
> Debian glibc does this:
> 
> +# if __ASSUME_VSYSCALL == 0
>           kact.sa_flags = act->sa_flags | SA_RESTORER;
>  
>           kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
>                               ? &restore_rt : &restore);
> +# else
> 
> __ASSUME_VSYSCALL is not defined so glibc should be setting
> SA_RESTORER.

We've tracked this a bit further.  This seems to be fine in
/lib/libc-2.3.2.so, but broken in /lib/tls/libc-2.3.2.so which does not
properly set SA_RESTORER.

-- 
Ian Gulliver
Systems Administrator
FairPoint Communications

Attachment: signature.asc
Description: Digital signature

Attachment: binseOryBZjoY.bin
Description: application/postage-hashcash


Reply to: