[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Question regarding the XML parser binding in PIL
- From: Florian Weimer <fw@...>
- Date: Sun, 07 Dec 2008 09:32:10 +0100
* Sam Roberts:
> On Sat, Dec 6, 2008 at 10:46 PM, Florian Weimer <fw@deneb.enyo.de> wrote:
>> * Sam Roberts:
>> It's difficult to reproduce this with the expat binding because it's
>> not expected to be reentrant (it just crashes). If there was a second
>> function like parse, I could use the same trick, I think.
>
>> Here's the crasher for the LuaExpat binding (the one at
>> <http://www.keplerproject.org/luaexpat/>, I hope it's related to the
>> one in PIL):
>
> This is unrelated to the sqlite bug you found. expat itself is
> non-reentrant. I suspect you could reproduce this crash in pure C by
> calling expat's parse from a callback that parse is calling.
Sure, but that's the reason why I can reproduce the original
issue. 8-)
In this sense, the example in PIL is incomplete.
> When C is called from lua, it must use the L it was passed. If C calls
> back into lua, after lua returns to it, it must use the L it was
> originally passed. Still. Even if lua had called back into C. This may
> not be easy to arrange, and until coroutines are used creatively, bugs
> may never be seen.
>
> What was the question?
I wonder if there's a canonical way to avoid these problems, perhaps
involving lua_newthread.