cfbolz changed the topic of #pypy to: PyPy, the flexible snake (IRC logs: https://quodlibet.duckdns.org/irc/pypy/latest.log.html#irc-end ) | use cffi for calling C | if a pep adds a mere 25-30 [C-API] functions or so, it's a drop in the ocean (cough) - Armin
oberstet has quit [Read error: Connection reset by peer]
oberstet has joined #pypy
jacob22 has quit [Read error: Connection reset by peer]
jacob22 has joined #pypy
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
<cfbolz>
gah, the test_collections.py failure on py3.7 is very scary
<cfbolz>
seems a weakref problem, maybe
dddddd has joined #pypy
<cfbolz>
arigato: ping? if you have a moment, I have found a very obscure problem
speeder39_ has joined #pypy
_whitelogger has joined #pypy
lritter has joined #pypy
<cfbolz>
ok, getting there...
oberstet has quit [Remote host closed the connection]
<antocuni>
cfbolz: what is the obscure problem you are having?
<cfbolz>
antocuni: a lib-python test about collections.abc is failing strangely
<cfbolz>
on 3.7
<cfbolz>
but I think I have it now
<cfbolz>
antocuni: it's due to a weakref being dead, but the callback isn't called yet
<antocuni>
funny enough, I am also debugging a thing about a weakref being dead
<cfbolz>
antocuni: in which project?
<antocuni>
but very likely unrelated to yours, mine problem is involving gevent (I am about to fill a bug)
<cfbolz>
ouch
<cfbolz>
sounds hard
<antocuni>
basically, after days of bug hunting I managed to write a 10 lines reproducer in which on CPython a greenlet is magically kept alive by someone (and then called at the right time), but on PyPy it is garbage collected (and thus never called again)
<antocuni>
the obscure thing is PyPy seems right to collect it. On CPython it works but I don't understand who keeps alive it
<cfbolz>
:-(
<tos9>
antocuni: how do you find such things
<tos9>
did you start with a larger example?
<antocuni>
yes, I started with a complex integration test involving docker, thousands of lines of code, mocks, weakrefs, etc. etc. A mess :)
<kenaan>
cfbolz py3.7 aa34f98b135c /pypy/module/_abc/app_abc.py: fix a bug in SimpleWeakSet: The weakref from the data set can already be dead. This can happen because (in PyPy at ...
<kenaan>
cfbolz py3.7 fd7960fb9618 /pypy/module/__builtin__/: improve error message, so that finding aa34f98b135c would have been simpler
<antocuni>
the original problem was a Timeout, but it was only very indirectly triggered by the fact that 1 of many greenlets disappeared
<antocuni>
then I slowly started to remove code and refactor here and there until I reduced it to 10 lines, but it took days
<cfbolz>
antocuni: so the 10 lines don't even need gevent any more?
<antocuni>
no no, gevent is still involved
<tos9>
antocuni: indeed sounds like fun
<tos9>
no need for hobbies at that point
<antocuni>
I have the impression that the problem is somewhere inside gevent, but it might be pypy's fault
<antocuni>
but I need to ask gevent people because I'm lost inside their code
<antocuni>
let me fill a proper bug report
<cfbolz>
I actually pointed a test case reducer at the problem, after inlining manually a ton of imports
<cfbolz>
turned it from 3000 lines to 150, then it was obvious
<antocuni>
tos9: actually, I like this kind of debugging. It really feels like hunting, where you slowly walk around your prey until it can no longer escapes :)
<tos9>
hahaha, yeah fair
<tos9>
antocuni: you know how the build for pypy-wheels is failing for multiple reasons? did you notice that one of them is that xgboost has turned into a 100MB+ wheel
<tos9>
antocuni: on macos it's 1.7MB
<tos9>
in your prey analogy that's a bit like expecting to be hunting pigeons and being presented with a walrus I think
<antocuni>
tos9: I haven't looked at pypy-wheels for a while :(
<tos9>
oh hm maybe not exactly sorry, it only adds 3 twice
<tos9>
sec
<tos9>
cfbolz: sorry, not repeatable -- just happens one time, not sure what I saw before (there are different refcounts given in the graph drawn by objdump and by doing len(gc.get_referrers) somehow, so maybe I was comparing those incorrectly)
<tos9>
but the referrers are 4 after the gc runs, then 7 after calling objdump, then stay 7 after repeated calls
speeder39_ has quit [Quit: Connection closed for inactivity]
CrazyPython has joined #pypy
speeder39_ has joined #pypy
mattip has joined #pypy
<mattip>
ronan: why when I run pypy/goal/<pypy> lib-python/*/test/test_curses.py on both default and py3.6 I get test failures,
<mattip>
but these don't show on the buildslave log?
<mattip>
running the test on the buildslave gives the same failures
CrazyPython has quit [Read error: Connection reset by peer]
CrazyPython has joined #pypy
CrazyPython has quit [Read error: Connection reset by peer]
Ai9zO5AP has joined #pypy
CrazyPython has joined #pypy
<cfbolz>
mattip: they are run with -m, maybe
<mattip>
no, it seems to be some strange interaction with stdout/stderr, pytest, and the weird conftest.py file we use
<mattip>
the actual command run is python2 pypy/pypy/tool/watchdog.py 1324.0 pypy/pypy/goal/pypy-c pypy/pypy/tool/pytest/run-script/regrverbose.py test_curses
<mattip>
which we run via sys.command. When I run it directly, I get a SIGSEGV
<mattip>
and a messed up stdout,stdin,stderr so I need to reset the terminal
<mattip>
without watchdog, I get a SIGSEGV but the terminal is OK
<mattip>
regrverbose.py refers to cpython2.4.1/test/regrtest.py, but that is very different on 2.7.13
<mattip>
the actual segfault is in calling lib.pair_content(curses.COLOR_PAIRS -1)
<mattip>
on cpython, _curses.COLORPAIRS is 256. We get 32766
jacob22 has quit [Read error: Connection reset by peer]
CrazyPython has quit [Ping timeout: 240 seconds]
jacob22 has joined #pypy
Ai9zO5AP has quit [Ping timeout: 240 seconds]
Ai9zO5AP has joined #pypy
dddddd_ has joined #pypy
dddddd has quit [Ping timeout: 272 seconds]
dddddd_ is now known as dddddd
speeder39_ has quit [Quit: Connection closed for inactivity]
CrazyPython has joined #pypy
CrazyPython has quit [Remote host closed the connection]
CrazyPython has joined #pypy
CrazyPython has quit [Read error: Connection reset by peer]
CrazyPython has joined #pypy
jvesely has joined #pypy
CrazyPython has quit [Read error: Connection reset by peer]