The plot thickens even more. I tried several other things, and was
surprised to find that a call to uv_timeout works just fine, that call
takes a callback, but no strings and never stores the strings internally.

On a whim I translated the entire thing (without a JIT) and everything I
throw at it runs without a problem. Could this just be an issue with ffi
and CPython?

Timothy

On Mon, Nov 10, 2014 at 1:16 PM, Timothy Baldridge <tbaldri...@gmail.com>
wrote:

> So I hacked on this more over my lunch break and am still completely
> stumped, I've removed all deallocation in order to make sure I'm not
> double-freeing something (make it stop crashing then make it stop leaking
> is the idea). No dice.
>
> The only thing I can figure out is that perhaps rffi is somehow freeing
> something I don't want it to free? Looking at the internals of
> rffi.llexternal, I see that it sometimes auto frees stuff, but the only
> things I'm passing in are raw buffers, voidp, integers,  or the callback.
>
> Since this is libuv, the library may hold onto stuff like the filename
> even after the call to uv_fs_open completes. The idea being it will call
> the callback when the operation completes, but only during a call to
> uv_run. So all this looks correct to me, but I get the feeling that rffi
> must be doing some magic somewhere that I don't want.
>
> Any input would be awesome, I've been hacking on this for about half a
> week now and I'm completely stumped.
>
> Timothy
>
> On Mon, Nov 10, 2014 at 7:55 AM, Timothy Baldridge <tbaldri...@gmail.com>
> wrote:
>
>> That could be true for uv_fs_read, but in the minimal test case (in my
>> last email) I'm only opening a file 10 times, after the first few
>> iterations of opening the file (2-3 times) that test crashes.
>>
>>
>> Timothy
>>
>> On Mon, Nov 10, 2014 at 7:52 AM, Armin Rigo <ar...@tunes.org> wrote:
>>
>>> Hi Timothy,
>>>
>>> We're talking past each other.  I think that I already found that your
>>> code is not correct according to the docs.  You need to fix the
>>> signature of uv_fs_read() and create an array 'uv_buf_t[]', possibly
>>> of length 1.  I may be wrong though.
>>>
>>>
>>> A bientôt,
>>>
>>> Armin.
>>>
>>
>>
>>
>> --
>> “One of the main causes of the fall of the Roman Empire was that–lacking
>> zero–they had no way to indicate successful termination of their C
>> programs.”
>> (Robert Firth)
>>
>
>
>
> --
> “One of the main causes of the fall of the Roman Empire was that–lacking
> zero–they had no way to indicate successful termination of their C
> programs.”
> (Robert Firth)
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to