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
babuloseo has joined #pypy
babuloseo is now known as Guest39092
Guest39092 has left #pypy [#pypy]
CrazyPython has joined #pypy
lritter has quit [Ping timeout: 265 seconds]
lritter_ has joined #pypy
Ai9zO5AP has quit [Quit: WeeChat 2.5]
_whitelogger has joined #pypy
CrazyPython has quit [Remote host closed the connection]
CrazyPython has joined #pypy
lritter_ has quit [Quit: Leaving]
andi- has quit [Ping timeout: 245 seconds]
jcea has quit [Quit: jcea]
_whitelogger has joined #pypy
andi- has joined #pypy
CrazyPython has quit [Remote host closed the connection]
CrazyPython has joined #pypy
tos9_ has joined #pypy
tos9 has quit [Ping timeout: 260 seconds]
tos9_ is now known as tos9
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
CrazyPython has quit [Ping timeout: 248 seconds]
dddddd has quit [Ping timeout: 268 seconds]
jacob22 has quit [Read error: Connection reset by peer]
jacob22 has joined #pypy
oberstet has joined #pypy
k1nd0f has joined #pypy
k1nd0f has quit [Client Quit]
_whitelogger has joined #pypy
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 :(
<antocuni> tos9: 😂
<antocuni> so, here is the gevent issue: https://github.com/gevent/gevent/issues/1519
<antocuni> cfbolz, tos9: ^^^
<antocuni> arigato: (maybe you are interested in this as well ^^^)
<tos9> (/me waits while gevent installs to see a reproduction)
<antocuni> tos9: yes, it takes a while
<tos9> antocuni: (it finished and yeah I get the same but it's no more obvious to me either where those refs are coming from)
<tos9> I see only 3 extra ones I think though, not 7
<tos9> oh, I see 11 total if I run objgraph, and 7 without objgraph
<tos9> is that interesting or a red herring? each time you run objgraph 3 references go into the void
<tos9> which is a suspicious number considering 3 is the number that are unaccounted for
<cfbolz> tos9: is that repeatable?
<tos9> cfbolz: yes
<tos9> if I just add multiple calls each time adds 3
<LarstiQ> antocuni: that gevent issue sounds like it would be fun to read your hunting notes. Also it reminds me of https://arstechnica.com/gaming/2020/01/how-to-get-star-fox-64-ships-into-ocarina-of-time-no-hacking-required/
<cfbolz> tos9: leaky Mc leak
<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]