URL |
Status |
Linked |
Edit |
PR 4166 |
merged |
serhiy.storchaka,
2017-10-29 11:52
|
|
PR 4190 |
merged |
python-dev,
2017-10-31 12:01
|
|
PR 4193 |
merged |
serhiy.storchaka,
2017-10-31 12:32
|
|
PR 4196 |
merged |
serhiy.storchaka,
2017-10-31 14:40
|
|
PR 4201 |
merged |
python-dev,
2017-10-31 16:19
|
|
PR 4202 |
merged |
python-dev,
2017-10-31 16:20
|
|
PR 4219 |
merged |
serhiy.storchaka,
2017-11-01 14:37
|
|
PR 4349 |
merged |
serhiy.storchaka,
2017-11-09 15:55
|
|
msg305187 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-29 11:44 |
In Modules/selectmodule.c it is assumed that the kevent structure is defined on FreeBSD and NetBSD as:
struct kevent {
uintptr_t ident;
short filter;
u_short flags;
u_int fflags;
intptr_t data;
uintptr_t udata;
};
and on OpenBSD as:
struct kevent {
u_int ident;
short filter;
u_short flags;
u_int fflags;
intptr_t data;
int udata;
};
Actually it is defined on FreeBSD as:
struct kevent {
uintptr_t ident;
short filter;
u_short flags;
u_int fflags;
intptr_t data;
void *udata;
};
On OpenBSD as:
struct kevent {
uintptr_t ident;
short filter;
u_short flags;
u_int fflags;
int64_t data;
void *udata;
};
And on NetBSD as:
struct kevent {
uintptr_t ident;
uint32_t filter;
uint32_t flags;
uint32_t fflags;
int64_t data;
intptr_t udata;
};
Other issues are related to rich comparison. Due to integer overflows the ordering is not transitive. The rich comparison protocol is not properly supported, comparing a kevent_event object with a non-kevent_event object don't falls back to the rich comparison methods of the right arguments.
|
msg305290 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 11:59 |
New changeset b9052a0f91d2e83bbc27267247a5920c82b242a3 by Serhiy Storchaka in branch 'master':
bpo-31893: Fixed select.kqueue(). (#4166)
https://github.com/python/cpython/commit/b9052a0f91d2e83bbc27267247a5920c82b242a3
|
msg305294 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 12:46 |
New changeset f9a639b97c760f40d022223c7655053c89752850 by Serhiy Storchaka (Miss Islington (bot)) in branch '3.6':
bpo-31893: Fixed select.kqueue(). (GH-4166) (#4190)
https://github.com/python/cpython/commit/f9a639b97c760f40d022223c7655053c89752850
|
msg305295 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-10-31 12:48 |
The commit b9052a0f91d2e83bbc27267247a5920c82b242a3 broke compilation on FreeBSD:
building 'select' extension
cc -pthread -fPIC -Wno-unused-result -Wsign-compare -g -O0 -Wall -Wstrict-prototypes -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include -I. -I/usr/local/include -I/usr/home/buildbot/python/3.x.koobs-freebsd10/build/Include -I/usr/home/buildbot/python/3.x.koobs-freebsd10/build -c /usr/home/buildbot/python/3.x.koobs-freebsd10/build/Modules/selectmodule.c -o build/temp.freebsd-10.3-STABLE-amd64-3.7-pydebug/usr/home/buildbot/python/3.x.koobs-freebsd10/build/Modules/selectmodule.o
/usr/home/buildbot/python/3.x.koobs-freebsd10/build/Modules/selectmodule.c:1889:63: error: expected ';' at end of declaration
FILTER_FMT_UNIT FLAGS_FMT_UNIT FFLAGS_FMT_UNIT DATA_FMT_UNIT
^
;
1 error generated.
*** WARNING: renaming "_asyncio" since importing it failed: No module named 'select'
http://buildbot.python.org/all/#/builders/87/builds/95/steps/3/logs/stdio
|
msg305300 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 14:13 |
New changeset 8cbf4e10646c3f5b8f0d274c2d7dea5bb6305f57 by Serhiy Storchaka in branch '2.7':
[2.7] bpo-31893: Fixed select.kqueue(). (GH-4166) (#4193)
https://github.com/python/cpython/commit/8cbf4e10646c3f5b8f0d274c2d7dea5bb6305f57
|
msg305305 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-10-31 14:27 |
Oh, the commit also broke the "x86 Tiger 3.x buildbot:
http://buildbot.python.org/all/#/builders/30/builds/93
======================================================================
FAIL: test_create_event (test.test_kqueue.TestKQueue)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_kqueue.py", line 71, in test_create_event
self.assertEqual(ev.data, 5)
AssertionError: 25769803781 != 5
|
msg305309 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 14:56 |
Oh, I forgot that Mac OS X also in the BSD family.
Thank you Victor for signaling errors.
|
msg305312 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 16:18 |
New changeset 2298fad5ff907dd48ea0fb5c71fa22334ef28c6b by Serhiy Storchaka in branch 'master':
bpo-31893: Fix errors in b9052a0f91d2e83bbc27267247a5920c82b242a3. (#4196)
https://github.com/python/cpython/commit/2298fad5ff907dd48ea0fb5c71fa22334ef28c6b
|
msg305325 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 18:16 |
New changeset 84e252b79eed94bc9e9175f82191322c89e489ad by Serhiy Storchaka (Miss Islington (bot)) in branch '3.6':
bpo-31893: Fix errors in b9052a0f91d2e83bbc27267247a5920c82b242a3. (GH-4196) (#4201)
https://github.com/python/cpython/commit/84e252b79eed94bc9e9175f82191322c89e489ad
|
msg305326 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 18:16 |
New changeset e7531e54bf195b8d3ed35b4138901c82f7ed794c by Serhiy Storchaka (Miss Islington (bot)) in branch '2.7':
bpo-31893: Fix errors in b9052a0f91d2e83bbc27267247a5920c82b242a3. (GH-4196) (#4202)
https://github.com/python/cpython/commit/e7531e54bf195b8d3ed35b4138901c82f7ed794c
|
msg305329 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-10-31 19:07 |
Tests on all buildbots are passed.
|
msg305385 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-11-01 15:43 |
New changeset ce51890894be46f8f9d991a1d0ea1455fc41ccdc by Serhiy Storchaka in branch '2.7':
bpo-31893: Fix a backporting error in 8cbf4e10646c3f5b8f0d274c2d7dea5bb6305f57. (#4219)
https://github.com/python/cpython/commit/ce51890894be46f8f9d991a1d0ea1455fc41ccdc
|
msg305948 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-11-09 09:59 |
Test fails on x86 Tiger 2.7:
http://buildbot.python.org/all/#/builders/59/builds/17
======================================================================
FAIL: test_create_event (test.test_kqueue.TestKQueue)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/db3l/buildarea/2.7.bolen-tiger/build/Lib/test/test_kqueue.py", line 39, in test_create_event
self.assertRaises(TypeError, cmp, ev, None)
AssertionError: TypeError not raised
|
msg305949 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-11-09 10:02 |
Same failure on x86-64 El Capitan 2.7/
http://buildbot.python.org/all/#builders/98/builds/17
======================================================================
FAIL: test_create_event (test.test_kqueue.TestKQueue)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/buildbot/buildarea/2.7.billenstein-elcapitan/build/Lib/test/test_kqueue.py", line 39, in test_create_event
self.assertRaises(TypeError, cmp, ev, None)
AssertionError: TypeError not raised
|
msg305950 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-11-09 10:03 |
On also AMD64 FreeBSD 10.x Shared 2.7:
http://buildbot.python.org/all/#/builders/97/builds/17
======================================================================
FAIL: test_create_event (test.test_kqueue.TestKQueue)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/home/buildbot/python/2.7.koobs-freebsd10/build/Lib/test/test_kqueue.py", line 39, in test_create_event
self.assertRaises(TypeError, cmp, ev, None)
AssertionError: TypeError not raised
|
msg305958 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-11-09 11:44 |
Oh, I didn't test on 2.7.
The old code contradicted the common comparison behavior. It allowed comparing select.kevent with other objects only for equality as for identity. `kevent == other` always returned False even if `other == kevent` returned True. `kevent < other` raised a TypeError.
The new code uses the default behavior. `kevent == other` returns the same as `other == kevent` (False by default if types are not comparable, but may return True if `other.__eq__(kevent)` returns True). `kevent < other` returns the same as `other > kevent`. E.g. raises a TypeError by default in Python 3. But in Python 2 all objects are comparable by default, and this breaks a test which expects that select.kevent is not comparable.
There are two ways to fix this:
1. Make select.kevent non-comparable again. This contradicts the default behavior and I don't know reasons why it should be non-comparable, but this was an existing behavior.
2. Remove the tests or change them to test that comparing select.kevent with other object doesn't raise an error.
|
msg305964 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-11-09 15:09 |
kqueue_event_richcompare() returns NotImplemented if other is not an event:
if (!kqueue_event_Check(o)) {
Py_INCREF(Py_NotImplemented);
return Py_NotImplemented;
}
So I don't understand why tests started to fail with the commit ce51890894be46f8f9d991a1d0ea1455fc41ccdc.
|
msg305965 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-11-09 15:36 |
Because the default behavior is different in Python 2 and Python 3. In Python 3 this is a TypeError. In Python 2 all objects are comparable by default.
|
msg305966 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2017-11-09 15:39 |
I suggest to fix the tests, the code looks good to me.
|
msg305971 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) * |
Date: 2017-11-09 17:18 |
Fixed by PR 4349 (changeset 15e14538f90cabc87473a489316fdb81af76cfb2).
|
|
Date |
User |
Action |
Args |
2022-04-11 14:58:53 | admin | set | github: 76074 |
2017-11-09 17:18:30 | serhiy.storchaka | set | status: open -> closed resolution: fixed messages:
+ msg305971
stage: patch review -> resolved |
2017-11-09 15:55:54 | serhiy.storchaka | set | stage: resolved -> patch review pull_requests:
+ pull_request4306 |
2017-11-09 15:39:04 | vstinner | set | messages:
+ msg305966 |
2017-11-09 15:36:05 | serhiy.storchaka | set | messages:
+ msg305965 |
2017-11-09 15:09:28 | vstinner | set | messages:
+ msg305964 |
2017-11-09 11:44:17 | serhiy.storchaka | set | messages:
+ msg305958 |
2017-11-09 10:03:27 | vstinner | set | messages:
+ msg305950 |
2017-11-09 10:02:20 | vstinner | set | messages:
+ msg305949 |
2017-11-09 09:59:17 | vstinner | set | status: closed -> open resolution: fixed -> (no value) messages:
+ msg305948
|
2017-11-01 15:43:13 | serhiy.storchaka | set | messages:
+ msg305385 |
2017-11-01 14:37:27 | serhiy.storchaka | set | pull_requests:
+ pull_request4187 |
2017-10-31 19:07:08 | serhiy.storchaka | set | status: open -> closed resolution: fixed messages:
+ msg305329
stage: patch review -> resolved |
2017-10-31 18:16:13 | serhiy.storchaka | set | messages:
+ msg305326 |
2017-10-31 18:16:10 | serhiy.storchaka | set | messages:
+ msg305325 |
2017-10-31 16:20:34 | python-dev | set | pull_requests:
+ pull_request4171 |
2017-10-31 16:19:31 | python-dev | set | pull_requests:
+ pull_request4169 |
2017-10-31 16:18:24 | serhiy.storchaka | set | messages:
+ msg305312 |
2017-10-31 14:56:12 | serhiy.storchaka | set | messages:
+ msg305309 |
2017-10-31 14:40:29 | serhiy.storchaka | set | pull_requests:
+ pull_request4166 |
2017-10-31 14:27:33 | vstinner | set | messages:
+ msg305305 |
2017-10-31 14:13:54 | serhiy.storchaka | set | messages:
+ msg305300 |
2017-10-31 12:48:18 | vstinner | set | nosy:
+ vstinner messages:
+ msg305295
|
2017-10-31 12:46:17 | serhiy.storchaka | set | messages:
+ msg305294 |
2017-10-31 12:32:22 | serhiy.storchaka | set | pull_requests:
+ pull_request4163 |
2017-10-31 12:01:04 | python-dev | set | pull_requests:
+ pull_request4160 |
2017-10-31 11:59:57 | serhiy.storchaka | set | messages:
+ msg305290 |
2017-10-29 11:52:58 | serhiy.storchaka | set | keywords:
+ patch stage: patch review pull_requests:
+ pull_request4135 |
2017-10-29 11:44:41 | serhiy.storchaka | create | |