On Thu, Oct 12, 2006 at 04:09:53PM -0600, Steve Langasek wrote:
> On Thu, Oct 12, 2006 at 08:37:59PM +0200, Aurélien GÉRÔME wrote:
>
> > As I wrote in the bug report, I am turning around to find a fix.
>
> FWIW, this doesn't translate well into idiomatic English. :) I think you
> mean that you're desperate to find a fix?
Sorry, indeed, it is a French idiom that I literally translated. :P
> > This bug did not appear in the previous build from the same release. It
> > also does not appear on other architectures, because ircd-hybrid only
> > uses epoll on alpha as rtsigio does not work there.
>
> You should not be using epoll on alpha either, I'm afraid, because it's a
> 2.6-only syscall and this means upgrades for stable will break for people
> running the 2.4 kernel from sarge.
I would be happy to do that.
> You also should not be using syscall1 explicitly, you should be using the
> glibc interfaces...
Well, upstream uses them, not me. :)
> Do you have a reference to why rtsigio is broken only on alpha?
The upstream package build system gives the choice between rtsigio
and epoll. By default, every architectures use rtsigio. However,
I made alpha use epoll for the following reason.
I did not file a bug report when I found it, but it appears in
the debian/changelog. I was fixing a FTBFS due to a va_list bug in
ircd-hybrid and I decided to really test whether ircd-hybrid ran on
an alpha machine. The IRC daemon was running fine, but when an IRC
client intended to connect, nothing happened (the same symptoms are
described in #281234, except for the kernel messages). I attached
the IRCd process to strace and got the following output.
# strace -p 17222
Process 17222 attached - interrupt to quit
gettimeofday({1160692603, 481665}, NULL) = 0
rt_sigtimedwait([IO RT_3], 0x120330c50) = -1 EAGAIN (Resource
temporarily unavailable)
gettimeofday({1160692603, 984385}, NULL) = 0
rt_sigtimedwait([IO RT_3], 0x120330c50) = -1 EAGAIN (Resource
temporarily unavailable)
gettimeofday({1160692604, 486254}, NULL) = 0
rt_sigtimedwait([IO RT_3], 0x120330c50) = -1 EAGAIN (Resource
temporarily unavailable)
gettimeofday({1160692604, 988208}, NULL) = 0
rt_sigtimedwait([IO RT_3], 0x120330c50) = -1 EAGAIN (Resource
temporarily unavailable)
gettimeofday({1160692605, 490120}, NULL) = 0
rt_sigtimedwait([IO RT_3], 0x120330c50) = -1 EAGAIN (Resource
temporarily unavailable)
gettimeofday({1160692605, 992049}, NULL) = 0
rt_sigtimedwait([IO RT_3], 0x120330c50) = -1 EAGAIN (Resource
temporarily unavailable)
gettimeofday({1160692606, 493975}, NULL) = 0
rt_sigtimedwait([IO RT_3], <unfinished ...>
Process 17222 detached
And so on indefinitely...
Here is the output of the IRC client on another host.
00:44 -!- Irssi: Looking up sardaukar
00:44 -!- Irssi: Connecting to sardaukar [10.0.0.9] port 6667
00:44 -!- Irssi: Connection to sardaukar established
And nothing more.
Hmm... When reproducing the case (after a rebuild with rtsigio) and
looking at the buildd logs for each architecture, I just found that
ircd-hybrid has been built with epoll on any architectures. I did a
stupid thing in the debian/rules... Anyway, I will do another upload
with rtsigio enabled for any architectures by default, but alpha will
not work anymore as stated above, so I will retitle this bug with
"Impossible to connect to IRC server on alpha" and lower the severity
to important. I think that it is still better than a RC bug. :)
Cheers,
--
.''`. Aurélien GÉRÔME
: :' :
`. `'` Free Software Developer
`- Unix Sys & Net Admin
Attachment:
signature.asc
Description: Digital signature