[Python-Dev] New thread death in test_bsddb3
Thomas Heller
theller@python.net
02 May 2003 18:35:36 +0200
"Tim Peters" <tim_one@email.msn.com> writes:
> [Thomas Heller]
> > ...
> > So is the policy now that it is no longer *allowed* to create another
> > thread state, while in previous versions there wasn't any choice,
> > because there existed no way to get the existing one?
>
> You can still create all the thread states you like; the new check is in
> PyThreadState_Swap(), not in PyThreadState_New().
So you can create them, but are not allowed to use them? (Should there
be a smiley here, or not, I'm not sure)
>
> There was always a choice, but previously Python provided no *help* in
> keeping track of whether a thread already had a thread state associated with
> it. That didn't stop careful apps from providing their own mechanisms to do
> so.
>
> About policy, yes, it appears to be so now, else Mark wouldn't be raising a
> fatal error <wink>. I view it as having always been the policy (from a
> good-faith reading of the previous code), just a policy that was too
> expensive for Python to enforce. There are many policies like that, such as
> not passing goofy arguments to macros, and not letting references leak.
> Python doesn't currently enforce them because it's currently too expensive
> to enforce them. Over time that can change.
I'm confused: what *is* the policy now?
And: Has the policy *changed*, or was it simply not checked before?
Since I don't know the policy, I can only guess if the fatal error is
appropriate or not.
If it is, there should be a 'recipe' what to do (even if it is 'use the
approach outlined in PEP311').
If it is not, the error should be removed (IMO).
> Clearly, I like having fatal errors for dubious things in debug builds.
> Debug builds are supposed to help you debug. If the fatal error here drives
> you insane, and you don't want to repair the app code,
No, not at all.
Thanks,
Thomas