[issue11998] test_signal cannot test blocked signals if _tkinter is loaded; Tcl_Finalize()

2020-11-24 Thread Roundup Robot


Change by Roundup Robot :


--
pull_requests: +22379
pull_request: https://github.com/python/cpython/pull/23490

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue11998] test_signal cannot test blocked signals if _tkinter is loaded; Tcl_Finalize()

2011-05-24 Thread STINNER Victor

STINNER Victor victor.stin...@haypocalc.com added the comment:

I implemented signal.pthread_kill(), so it's now possible to test pending 
signals in test_signal, even if _tkinter is loaded.

I don't think that we need the _finalize() hack anymore.

--
resolution:  - wont fix
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue11998
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue11998] test_signal cannot test blocked signals if _tkinter is loaded

2011-05-04 Thread STINNER Victor

New submission from STINNER Victor victor.stin...@haypocalc.com:

I'm working on signals, especially on pthread_sigmask(), and I'm trying to 
understand test_signal failures.

test_signal fails if the _tkinter module is loaded, because _tkinter loads the 
Tcl library which create a thread waiting events in select(). For example, 
python -m test test_pydoc test_signal fails, because test_pydoc loads ALL 
Python modules. I opened an issue for test_pydoc: 
http://bugs.python.org/issue11995

_tkinter.c contains the following code:
#if 0
/* This was not a good idea; through Destroy bindings,
   Tcl_Finalize() may invoke Python code but at that point the
   interpreter and thread state have already been destroyed! */
Py_AtExit(Tcl_Finalize);
#endif

Tcl_Finalize() exits the thread, but this function is never called in Python. 
Anyway, it is not possible to unload a module implemented in C.

I would like to know if it would be possible to mask all signals in the Tcl 
thread, or if Tcl supports/uses signals.

It is possible to mask all signals in the Tcl thread using:
--
allsignals = range(1, signal.NSIG)
oldmask = signal.pthread_sigmask(signal.SIG_BLOCK, allsignals)
import _tkinter
signal.pthread_sigmask(signal.SIG_SETMASK, oldmask)
--

I'm not asking the question for test_signal: I have a patch fixing test_signal, 
even if the Tcl zombi thread is present (use pthread_kill() to send the signal 
directly to the main thread).

(I wrote zombi thread because I was not aware that Tcl uses a thread,
nor that test_pydoc loads all modules. The thread is valid, alive, and
it's just a joke. The threads is more hidden than zombi.)

(Message copied/pasted from python-dev)

--
components: Tests, Tkinter
messages: 135109
nosy: haypo
priority: normal
severity: normal
status: open
title: test_signal cannot test blocked signals if _tkinter is loaded
versions: Python 3.3

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue11998
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue11998] test_signal cannot test blocked signals if _tkinter is loaded

2011-05-04 Thread Roundup Robot

Roundup Robot devnull@devnull added the comment:

New changeset 88dca05ed468 by Victor Stinner in branch 'default':
Issue #11998, issue #8407: workaround _tkinter issue in test_signal
http://hg.python.org/cpython/rev/88dca05ed468

--
nosy: +python-dev

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue11998
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue11998] test_signal cannot test blocked signals if _tkinter is loaded

2011-05-04 Thread STINNER Victor

STINNER Victor victor.stin...@haypocalc.com added the comment:

As suggested by Antoine, here is a patch to call Tcl_Finalize() in test_signal.

You can call create a Tcl/Tk window, destroy it, call _tkinter._finalize(), and 
then create a new Tcl/Tk window. But call _tkinter._finalize() crashes if there 
is still a running Tcl/Tk window.

We should add a safety test checking that there is no more running widget. If 
it is not possible to implement this, the function should only be compiled in 
debug mode. If it is possible, it would be nice to call _tkinter._finalize() 
when the last widget is destroyed and/or at Python exit.

--
keywords: +patch
nosy: +gpolo
Added file: http://bugs.python.org/file21882/tkinter_finalize.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue11998
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue11998] test_signal cannot test blocked signals if _tkinter is loaded; Tcl_Finalize()

2011-05-04 Thread STINNER Victor

Changes by STINNER Victor victor.stin...@haypocalc.com:


--
title: test_signal cannot test blocked signals if _tkinter is loaded - 
test_signal cannot test blocked signals if _tkinter is loaded; Tcl_Finalize()

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue11998
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com