homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: curses library in python 2.4.3 broken
Type: Stage:
Components: Library (Lib) Versions: Python 2.4
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: akuchling Nosy List: akuchling, anthonybaxter, atler_, loewis, nnorwitz, psmedley, splitscreen, vnainar
Priority: critical Keywords:

Created on 2006年04月04日 08:47 by vnainar, last changed 2022年04月11日 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
panelw.diff loewis, 2006年04月15日 15:30
Messages (24)
msg28038 - (view) Author: nomind (vnainar) Date: 2006年04月04日 08:47
My python programs using curses library do not work
with version 2.4.3.Even the 'ncurses.py ' demo program
in the Demo/curses directory does not work correctly.
The problem seems to be in the 'panels' library
msg28039 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月04日 22:16
Logged In: YES 
user_id=21627
What do you mean by "do not work"? What operating system and
what curses implementation are you using?
msg28040 - (view) Author: nomind (vnainar) Date: 2006年04月06日 05:38
Logged In: YES 
user_id=1493752
Sorry my original post was incomplete. I am running
slackware 10.2 (linux kernel 2.6).The python library was
tested with ncurses 5.4 and ncurses 5.5( the latest
release). All programs run OK with 2.4.1.As I said ,the 
curses demo that comes with the Python distributions runs OK
with 2.4.1 but 
not with 2.4.3 - I have both on my machine
msg28041 - (view) Author: Jan Palus (atler_) Date: 2006年04月09日 10:06
Logged In: YES 
user_id=1497957
I confirm the problem. Every program using curses library
segfaults and there's only one error before it happens:
...
import curses # directory /usr/share/python2.4/curses
import curses # precompiled from
/usr/share/python2.4/curses/__init__.pyc
dlopen("/usr/lib/python2.4/lib-dynload/_curses.so", 2);
import _curses # dynamically loaded from
/usr/lib/python2.4/lib-dynload/_curses.so
import curses.wrapper # precompiled from
/usr/share/python2.4/curses/wrapper.pyc
import curses.panel # precompiled from
/usr/share/python2.4/curses/panel.pyc
dlopen("/usr/lib/python2.4/lib-dynload/_curses_panel.so", 2);
import _curses_panel # dynamically loaded from
/usr/lib/python2.4/lib-dynload/_curses_panel.so
Traceback (most recent call last):
 File "ncurses.py", line 273, in ?
 curses.wrapper(demo_panels)
 File "/usr/share/python2.4/curses/wrapper.py", line 49, in
wrapper
_curses.error: nocbreak() returned ERR
I'm running Linux (PLD) with Python 2.4.3 and ncurses 5.5.
With Python 2.4.2 everything worked fine.
msg28042 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月09日 10:29
Logged In: YES 
user_id=21627
I can't reproduce any of this on Debian;
Demo/curses/ncurses.py runs fine. Can you please
1. run ldd on _curses.so, and report the output, and
2. edit setup.py, removing the lines that deal with ncursesw,
3. atler_: produce a gdb backtrace on the time of the crash,
4: vnainar: please report what you mean by "does not work".
Does it erase your hard disk? turn off the machine? Paint
things blue instead of red?
msg28043 - (view) Author: Matt Fleming (splitscreen) Date: 2006年04月09日 10:46
Logged In: YES 
user_id=1126061
Cannot reproduce on Gentoo. All the files in the Demo/curses
directory run fine.
msg28044 - (view) Author: Jan Palus (atler_) Date: 2006年04月09日 10:51
Logged In: YES 
user_id=1497957
$ ldd /usr/lib/python2.4/lib-dynload/_curses.so
 libncursesw.so.5 => /usr/lib/libncursesw.so.5
(0x7004c000)
 libpthread.so.0 => /lib/libpthread.so.0 (0x70080000)
 libc.so.6 => /lib/libc.so.6 (0x700e4000)
 libdl.so.2 => /lib/libdl.so.2 (0x70228000)
 libtinfow.so.5 => /usr/lib/libtinfow.so.5 (0x7023c000)
 /lib/ld-linux.so.2 (0x70000000)
...
Program received signal SIGSEGV, Segmentation fault.
0x7063947c in hide_panel () from /usr/lib/libpanel.so.5
gdb) bt
#0 0x7063947c in hide_panel () from /usr/lib/libpanel.so.5
#1 0x706254b8 in ?? () from
/usr/lib/python2.4/lib-dynload/_curses_panel.so
#2 0x706254b8 in ?? () from
/usr/lib/python2.4/lib-dynload/_curses_panel.so
Previous frame identical to this frame (corrupt stack?)
It seems that only programs using panel library cause
segfaults (all other demos run fine except ncurses.py),
sorry for a mistake in a last post.
loewis: I'm not sure I understand second point. What excatly
should be changed in setup.py?
msg28045 - (view) Author: Anthony Baxter (anthonybaxter) (Python triager) Date: 2006年04月09日 12:14
Logged In: YES 
user_id=29957
The buildbot boxes don't show this problem.
You might need to rebuild a Python with -g and unstripped to
get a useful backtrace.
msg28046 - (view) Author: Jan Palus (atler_) Date: 2006年04月09日 13:48
Logged In: YES 
user_id=1497957
More complete backtrace, I hope it will help:
http://pastebin.com/649445 
msg28047 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月09日 20:58
Logged In: YES 
user_id=21627
atler_: around line 427, you find
 if self.compiler.find_library_file(lib_dirs,
 'ncursesw'):
 readline_libs.append('ncursesw')
 elif self.compiler.find_library_file(lib_dirs,
 'ncurses'):
Replace that with
 if self.compiler.find_library_file(lib_dirs,
 'ncurses'):
(i.e. dropping the ncursesw part), and rebuild.
msg28048 - (view) Author: Jan Palus (atler_) Date: 2006年04月10日 21:24
Logged In: YES 
user_id=1497957
loewis: removing lines refering to ncursesw solves the
problem. ncurses.py runs fine as well as other programs.
What is actual problem then? Something with ncursesw or
with python?
Anyway, Thanks for your help.
msg28049 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月10日 22:28
Logged In: YES 
user_id=21627
That's hard to tell. Somebody would have to debug ncurses to
find out why it crashes. Notice that it crashes only on some
installations, so it is likely rather a problem with your
ncurses installation, than with Python (or even with ncurses
itself).
msg28050 - (view) Author: nomind (vnainar) Date: 2006年04月11日 05:13
Logged In: YES 
user_id=1493752
Removing 'ncursesw' (there are two references to it in
'setup.py') seems to solve the problem. I noticed one more
oddity. Even before the above recompilation , it ran fine
on an Xterm !
msg28051 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月11日 05:32
Logged In: YES 
user_id=21627
Ah, ok. vnainar, atler_: What terminal had you been using to
make it crash? What is your locale? Any other conditions
that might be relevant (e.g. dimension of the terminal)?
msg28052 - (view) Author: nomind (vnainar) Date: 2006年04月13日 11:00
Logged In: YES 
user_id=1493752
Well , it is the linux console (in VGA mode ).
The local is en_US.The size of the console is
100X37.
msg28053 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月15日 07:05
Logged In: YES 
user_id=21627
I couldn't reproduce the problem on a Linux console
(although my console had a different size); so it remains
unreproducable for me.
msg28054 - (view) Author: Jan Palus (atler_) Date: 2006年04月15日 14:48
Logged In: YES 
user_id=1497957
Half day of debugging and it seems that I found an answer...
just by accident ;).
When curses module is linked against ncursesw it seems that
it also should be linked against panelw not plain panel.
After changing this in setup.py, ncurses.py demo finally
runs fine.
msg28055 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006年04月15日 15:30
Logged In: YES 
user_id=21627
Good spotting! Can everybody please confirm that the
attached patch fixes the problem?
msg28056 - (view) Author: Jan Palus (atler_) Date: 2006年04月17日 18:50
Logged In: YES 
user_id=1497957
/me confirms
msg28057 - (view) Author: Paul Smedley (psmedley) Date: 2006年05月21日 14:38
Logged In: YES 
user_id=1359962
I have a similar problem on OS/2. When running any script
that uses curses I get:
[U:\dev\Python-2.4.3\PC\os2emx]python test_curses.py
Traceback (most recent call last):
 File "test_curses.py", line 242, in ?
 curses.wrapper(main)
 File "U:/DEV/PYTHON-2.4.3/Lib/curses/wrapper.py", line 49,
in wrapper
 curses.nocbreak()
_curses.error: nocbreak() returned ERR
If I remove the reference to nocbreak() from wrapper.py, I
get the same error but in endwin(), removing endwin() from
wrapper.py, I get an error in cbreak(), removing cbreak()
then some scripts work.
For example, from the demo folder, all work exceptlife.py &
xmas.py, which both return an error "_curses.error:
nocbreak() returned ERR" on various line numbers.
Seems certain curses functions are working correctly, others
aren't.
The patch in this bug does NOT make any difference here.
msg28058 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2006年08月03日 06:03
Logged In: YES 
user_id=33168
Andrew, could you apply this after the freeze is over?
msg28059 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2006年08月03日 12:53
Logged In: YES 
user_id=11375
Sure. 
msg28060 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2006年08月06日 22:12
Logged In: YES 
user_id=11375
Committed to the trunk in rev. 51134.
msg28061 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2006年08月07日 00:39
Logged In: YES 
user_id=11375
Committed to 2.4 branch in rev.51136.
History
Date User Action Args
2022年04月11日 14:56:16adminsetgithub: 43155
2006年04月04日 08:47:30vnainarcreate

AltStyle によって変換されたページ (->オリジナル) /