"m.u.k" <m.u.k.2 at gawab.com> wrote: > Josiah Carlson <jcarlson at uci.edu> wrote in > news:20050503112637.648F.JCARLSON at uci.edu: > > > Offering any hook for Py_FatalError may not even be enough, as some of > > those errors are caused by insufficient memory. What if a hook were > > available, but it couldn't be called because there wasn't enough memory? > > > > Of course there is the option of pre-allocating a few kilobytes, then > > just before one calls the hook, freeing that memory so that the hook can > > execute (assuming the hook is small enough). I'm not sure if this is a > > desireable general mechanic, but it may be sufficient for you. If you > > do figure out a logging mechanism that is almost guaranteed to execute > > on FatalError, post it to sourceforge. > > IMHO this should be left to hooker(apparerently not right word, but you get > the point :) ). If he allocates more mem. or does heavy stuff, that will just > fail. Anyway abort() is a failure too. Either abort() will end the process or > OS will on such a critical error. I'm not talking about doing memory-intensive callbacks, I'm talking about the function call itself. From what I understand, any function call in Python requires a memory allocation. This is trivially true in the case of rentrant Python calls; which requires the allocation of a frame object from heap memory, and in the case of all calls, from C stack memory. If you cannot allocate a frame for __del__ method calling (one of the error conditions), you certainly aren't going to be able to call a Python callback (no heap memory), and may not have enough stack memory required by your logging function; even if it is written in C (especially if you construct a nontrivial portion of the message in memory before it is printed). If I'm wrong, I'd like to hear it, but I'm still waiting for your patch on sourceforge. - Josiah
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4