Bug#496962: yabasic: The "open window" statement fails.
Package: yabasic
Version: 2.763-4
Severity: normal
Tags: patch
In yabasic, executing the statement "open window 200,200" results
in the following error output:
open window 200,200
*** glibc detected *** yabasic: munmap_chunk(): invalid pointer: 0x080683a1 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7ca74f4]
yabasic[0x80575f1]
yabasic[0x8059552]
yabasic[0x804db6b]
yabasic[0x804e336]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7c4f455]
yabasic[0x804a711]
======= Memory map: ========
08048000-08078000 r-xp 00000000 08:06 296531 /usr/bin/yabasic
08078000-08079000 rw-p 0002f000 08:06 296531 /usr/bin/yabasic
08079000-080b2000 rw-p 08079000 00:00 0 [heap]
b7bdd000-b7be7000 r-xp 00000000 08:01 39952 /lib/i686/cmov/libnss_files-2.7
.so
b7be7000-b7be9000 rw-p 00009000 08:01 39952 /lib/i686/cmov/libnss_files-2.7
.so
b7c11000-b7c12000 rw-p b7c11000 00:00 0
b7c12000-b7c16000 r-xp 00000000 08:06 1235847 /usr/lib/libXdmcp.so.6.0.0
b7c16000-b7c17000 rw-p 00003000 08:06 1235847 /usr/lib/libXdmcp.so.6.0.0
b7c17000-b7c19000 r-xp 00000000 08:06 1235845 /usr/lib/libXau.so.6.0.0
b7c19000-b7c1a000 rw-p 00001000 08:06 1235845 /usr/lib/libXau.so.6.0.0
b7c1a000-b7c31000 r-xp 00000000 08:06 1235849 /usr/lib/libxcb.so.1.0.0
b7c31000-b7c32000 rw-p 00016000 08:06 1235849 /usr/lib/libxcb.so.1.0.0
b7c32000-b7c33000 rw-p b7c32000 00:00 0
b7c33000-b7c34000 r-xp 00000000 08:06 1236455 /usr/lib/libxcb-xlib.so.0.0.0
b7c34000-b7c35000 rw-p 00000000 08:06 1236455 /usr/lib/libxcb-xlib.so.0.0.0
b7c35000-b7c37000 r-xp 00000000 08:01 39946 /lib/i686/cmov/libdl-2.7.so
b7c37000-b7c39000 rw-p 00001000 08:01 39946 /lib/i686/cmov/libdl-2.7.so
b7c39000-b7d8e000 r-xp 00000000 08:01 39943 /lib/i686/cmov/libc-2.7.so
b7d8e000-b7d8f000 r--p 00155000 08:01 39943 /lib/i686/cmov/libc-2.7.so
b7d8f000-b7d91000 rw-p 00156000 08:01 39943 /lib/i686/cmov/libc-2.7.so
b7d91000-b7d94000 rw-p b7d91000 00:00 0
b7d94000-b7e7f000 r-xp 00000000 08:06 1236457 /usr/lib/libX11.so.6.2.0
b7e7f000-b7e82000 rw-p 000eb000 08:06 1236457 /usr/lib/libX11.so.6.2.0
b7e82000-b7e83000 rw-p b7e82000 00:00 0
b7e83000-b7eb2000 r-xp 00000000 08:01 26585 /lib/libncurses.so.5.6
b7eb2000-b7eb5000 rw-p 0002f000 08:01 26585 /lib/libncurses.so.5.6
b7eb5000-b7ed9000 r-xp 00000000 08:01 39947 /lib/i686/cmov/libm-2.7.so
b7ed9000-b7edb000 rw-p 00023000 08:01 39947 /lib/i686/cmov/libm-2.7.so
b7edb000-b7edc000 rw-p b7edb000 00:00 0
b7edc000-b7ef0000 r-xp 00000000 08:06 1236461 /usr/lib/libICE.so.6.3.0
b7ef0000-b7ef1000 rw-p 00014000 08:06 1236461 /usr/lib/libICE.so.6.3.0
b7ef1000-b7ef3000 rw-p b7ef1000 00:00 0
b7ef3000-b7efa000 r-xp 00000000 08:06 1236463 /usr/lib/libSM.so.6.0.0
b7efa000-b7efb000 rw-p 00006000 08:06 1236463 /usr/lib/libSM.so.6.0.0
b7f14000-b7f20000 r-xp 00000000 08:01 26627 /lib/libgcc_s.so.1
b7f20000-b7f21000 rw-p 0000b000 08:01 26627 /lib/libgcc_s.so.1
b7f21000-b7f25000 rw-p b7f21000 00:00 0
b7f25000-b7f3f000 r-xp 00000000 08:01 29362 /lib/ld-2.7.so
b7f3f000-b7f41000 rw-p 0001a000 08:01 29362 /lib/ld-2.7.so
bf9de000-bf9f3000 rw-p bffeb000 00:00 0 [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
---Fatal in standard input, line 1: received signal ABORT, cannot proceed.
---Immediate exit to system, due to a fatal error.
I found a discussion at
http://forum.basicprogramming.org/index.php?topic=21.0 and a patch at
http://www.basicprogramming.org/files/graphic.patch, which I'm including
with this report. I've applied the patch on my system and it does fix
the problem.
-- System Information:
Debian Release: lenny/sid
APT prefers testing
APT policy: (750, 'testing'), (80, 'cool'), (80, 'cold'), (40, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.24-1-686 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages yabasic depends on:
ii libc6 2.7-13 GNU C Library: Shared libraries
ii libice6 2:1.0.4-1 X11 Inter-Client Exchange library
ii libncurses5 5.6+20080804-1 shared libraries for terminal hand
ii libsm6 2:1.0.3-2 X11 Session Management library
ii libx11-6 2:1.1.4-2 X11 client-side library
yabasic recommends no packages.
yabasic suggests no packages.
-- debconf-show failed
diff -r -u yabasic-2.763.orig/graphic.c yabasic-2.763/graphic.c
--- yabasic-2.763.orig/graphic.c 2008-08-28 15:35:44.000000000 -0400
+++ yabasic-2.763/graphic.c 2008-08-28 15:36:50.000000000 -0400
@@ -212,12 +212,12 @@
return;
#ifdef UNIX
-
/* create the window */
attrib.backing_store = Always;
attrib.save_under = TRUE;
attrib.background_pixel = backpixel;
attrib.colormap = colormap;
+
window =
XCreateWindow (display, root, winx, winy, winwidth, winheight, 0,
CopyFromParent, CopyFromParent, visualinfo.visual,
@@ -731,6 +731,7 @@
return FALSE;
}
+
/* get screen */
screen = DefaultScreen (display);
root = RootWindow (display, screen);
@@ -780,8 +781,10 @@
visualinfo.visual, AllocNone);
/* now, that we have the colormap, we try to get the colors requested for fore- and background */
+
if (!foreground)
foreground = XGetDefault (display, "yabasic", "foreground");
+
if (!foreground)
foreground = "black";
if (!XLookupColor
@@ -815,6 +818,7 @@
/* get size hints */
if (geometry == NULL)
geometry = XGetDefault (display, "yabasic", "geometry");
+
XParseGeometry (geometry, &winx, &winy, &w, &h);
sizehints.x = winx;
sizehints.y = winy;
@@ -830,12 +834,15 @@
rgc = XCreateGC (display, root, GCForeground | GCBackground, &xgcvalues);
/* get font */
- if (!font)
- font = XGetDefault (display, "yabasic", "font");
- if (!font)
- font = "6x10";
- if (!change_font (font))
- return FALSE;
+
+/* if (!font)
+ font = XGetDefault (display, "yabasic", "font");*/
+ if (!font) {
+ font = malloc(sizeof(char)*6);
+ font = strcpy(font,"fixed");
+ }
+ if (!change_font (font))
+ return FALSE;
#elif WINDOWS
/* choose font */
@@ -895,19 +902,20 @@
#ifdef UNIX
if (font)
- {
- if (!myfont || strcmp (font, name))
+ {
+ if (!myfont || strcmp (font, name))
{
- if (myfont)
- XUnloadFont (display, myfont->fid);
- my_free (font);
- }
- else
- {
- return TRUE;
+ if (myfont) {
+ XUnloadFont (display, myfont->fid);
+ my_free (font);
+ }
}
+ else
+ {
+ return TRUE;
}
- font = my_strdup (name);
+ }
+// font = my_strdup (name);
myfont = XLoadQueryFont (display, font);
if (!myfont)
{
Reply to: