BlockingIOError: [Errno 11] The file descriptor fd refers to a file other than a socket and has been marked nonblocking
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
PlainBox (Toolkit) |
Won't Fix
|
High
|
Unassigned |
Bug Description
I got this error when I was running the dbus service from trunk. I hit CTRL-C several times to stop it.
For information this error happened when checkbox-gui was requesting the prerun of local jobs.
The same job (2013.com.
plainbox run -i 2013.com.
The error (the glibc runner is started by the dbus servicce, this is the only difference):
$ checkbox-
WARNING plainbox.runner: execution_ctrl_list not passed to JobRunner
^C^Cexception calling callback for <Future at 0x7fc2a08d31d0 state=finished raised BlockingIOError>
Traceback (most recent call last):
File "/usr/lib/
callback(self)
File "/home/
self._result = result_
File "/usr/lib/
return self.__get_result()
File "/usr/lib/
raise self._exception
File "/usr/lib/
result = self.fn(*self.args, **self.kwargs)
File "/home/
update=False)
File "/home/
job_result = runner.run_job(job, config)
File "/home/
return runner(job, config)
File "/home/
return self._just_
File "/home/
return_code, record_path = self._run_
File "/home/
return_code = self._run_
File "/home/
job, config, self._session_dir, extcmd_popen)
File "/home/
return extcmd_
File "/home/
return self._loop(
File "/home/
for fdsi in key.fileobj.read():
File "/home/
num_read = read(self._sfd, byref(info_list), sizeof(info_list))
File "/home/
raise OSError(errno, errno_map.
BlockingIOError: [Errno 11] The file descriptor fd refers to a file other than a socket and has been marked nonblocking (O_NONBLOCK), and the read would block.
The file descriptor fd refers to a socket and has been marked nonblocking (O_NONBLOCK), and the read would block. POSIX.1-2001 allows either EAGAIN or EWOULDBLOCK error to be returned for this case, and does not require these constants to have the same value, so a portable application should check for both possibilities.
Related branches
- Checkbox Developers: Pending requested
-
Diff: 239 lines (+67/-28)3 files modifiedplainbox/plainbox/vendor/extcmd/glibc.py (+2/-2)
plainbox/plainbox/vendor/pyglibc/__init__.py (+2/-0)
plainbox/plainbox/vendor/pyglibc/_pthread_sigmask.py (+63/-26)
description: | updated |
Changed in plainbox: | |
assignee: | nobody → Zygmunt Krynicki (zkrynicki) |
Changed in plainbox: | |
milestone: | 0.18 → none |
Changed in plainbox: | |
assignee: | Zygmunt Krynicki (zyga) → nobody |
Changed in plainbox: | |
status: | In Progress → Confirmed |
milestone: | none → future |
Changed in plainbox: | |
importance: | Critical → High |
tags: | added: extcmd |
Changed in plainbox: | |
status: | Confirmed → Won't Fix |
09:32 < spineau> zyga: I remmber the Friday one but the bug I founf this we with dbus is still reproducible in trunk
09:32 < zyga> spineau: yes, that's something else, I haven't seen that
09:33 < spineau> zyga: I'm wondering who get the sigchld
09:33 < spineau> zyga: I traced this module to just see that we're deplating both stderr and stdout and then nothing
09:34 < zyga> spineau: that's a weird thing to happen
09:34 < zyga> spineau: I think I know what happened though
09:34 < spineau> zyga: running a ps shows a [cat] <defunct>
09:34 < zyga> spineau: sigchld got delivered to another thread in the process
09:34 < zyga> spineau: and plainbox, by the time we got to read from signalfd, found that signal is gone now
09:34 < spineau> zyga: that's also what I 'm thinking
09:35 < zyga> spineau: ok, the hard way out then is to block it entirely, I'll do that
09:35 < zyga> spineau: thanks