ports/155255: comms/xnecview crashes with Gdk-CRITICAL error
Tom Russo
russo at bogodyn.org
Fri Mar 4 08:40:11 UTC 2011
>Number: 155255
>Category: ports
>Synopsis: comms/xnecview crashes with Gdk-CRITICAL error
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Mar 04 08:40:10 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Tom Russo
>Release: FreeBSD 7.4-PRERELEASE
>Organization:
>Environment:
FreeBSD bogodyn.org 7.4-PRERELEASE FreeBSD 7.4-PRERELEASE #0: Sat Jan 1 21:48:22 MST 2011 russo at bogodyn.org:/users2/obj/usr/src/sys/BOGODYN i386
>Description:
Some time ago xnecview, which I used to use regularly on this system, after some upgrade or other started crashing with the error:
(xnecview:77768): Gdk-CRITICAL **: IA__gdk_window_set_back_pixmap: assertion `pixmap == NULL || gdk_drawable_get_depth (window) == gdk_drawable_get_depth (pixmap)' failed
This is repeatable on any NEC output, including old NEC output I had lying around from the days when I used xnecview regularly.
>How-To-Repeat:
Run xnecview on any valid NEC input file, such as
----CUT-----
CM EXAMPLE 3. VERTICAL HALF WAVELENGTH ANTENNA OVER GROUND
CM EXTENDED THIN WIRE KERNEL USED
CM 1. PERFECT GROUND
CM with phased vertical some distance away
CE PATTERN CALCULATIONS
GW 0 9 0.0 0.0 2.0 0.0 0.0 7.0 0.00051
GW 1 9 2.5 0.0 2.0 2.5 0.0 7.0 0.00051
GE 0
EX 0 0 5 0 1.0 0.0 0.0 0.0
EX 0 1 5 0 -1.0 1.e-16 0.0 0.0
GN 2 0 0 0 13.0 .002 0.0 0.0
FR 0 1 0 0 30.0 0.0 0.0 0.0
EN
-----CUT------
The program will put up a blank window, and will crash if any interaction is attempted.
>Fix:
The attached patch fixes the issue. It is taken from a Debian bug fix I found in their bug tracker, dated 2008:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484725
This patch completely fixes the issue I have observed, and all my old NEC files (including the one in the "How To Repeat" section above) are viewable after the patch.
Patch attached with submission follows:
commit 02352e102c1913dc232500c7fd80b3947a8593ea
Author: Diego Ongaro <ongardie at gmail.com>
Date: Sun Jun 29 00:30:09 2008 +0100
remove depth
diff --git a/xwin.c b/xwin.c
index 31d3cf2..4011c16 100644
--- xwin.c
+++ xwin.c
@@ -39,7 +39,6 @@ GtkLabel *msgwidget; /* label widget in top right corner, used for several m
int fontheight;
GdkPixmap *gbackg2=NULL; /* for window2, we draw into this pixmap */
GdkColormap *gcm;
-int depth;
int redraw=1; /* flag which signifies need for redrawing of struct/gain plot */
int dragging=0; /* flag to indicate that user is dragging the struct/gain plot */
@@ -360,7 +359,7 @@ gint resize_event(GtkWidget *w,GdkEventConfigure *ev,gpointer dummy)
winsizex=ev->width;
winsizey=ev->height;
gdk_pixmap_unref(gbackg);
- gbackg=gdk_pixmap_new(w->window,winsizex,winsizey,depth);
+ gbackg=gdk_pixmap_new(w->window,winsizex,winsizey,gdk_drawable_get_depth(w->window));
calcproj();
redraw=1;
#if 0
@@ -876,7 +875,7 @@ gint resize_event2(GtkWidget *w,GdkEventConfigure *ev,gpointer dummy)
win2sizex=ev->width;
win2sizey=ev->height;
gdk_pixmap_unref(gbackg2);
- gbackg2=gdk_pixmap_new(w->window,win2sizex,win2sizey,depth);
+ gbackg2=gdk_pixmap_new(w->window,win2sizex,win2sizey,gdk_drawable_get_depth(w->window));
redraw2=1;
return TRUE;
@@ -1035,10 +1034,12 @@ void cmd_setZ0(GtkEntry *w)
void getcolor(char *name,GdkColor *xc)
{
+#if 0
if (depth==1) { /* on 1bpp displays, choose black for everything except the background */
if (strcmp(name,C_BG)) name="black";
else name="white";
}
+#endif
gdk_color_parse(name,xc);
if (!gdk_colormap_alloc_color(gcm,xc,TRUE,FALSE)) {
/* if allocation failed, use black */
@@ -1210,7 +1211,9 @@ void maininitX(int really)
{
GdkVisual *vi;
vi = gdk_visual_get_best();
+#if 0
depth=vi->depth;
+#endif
gcm=gdk_colormap_new(vi,FALSE);
}
@@ -1386,7 +1389,7 @@ void maininitX(int really)
winsizex=toprow->requisition.width;
calcproj();
}
- gbackg=gdk_pixmap_new(w->window,winsizex,winsizey,depth);
+ gbackg=gdk_pixmap_new(w->window,winsizex,winsizey,gdk_drawable_get_depth(w->window));
upd_msg();
@@ -1482,7 +1485,7 @@ void maininitX(int really)
ggc2 = gdk_gc_new(w->window);
- gbackg2=gdk_pixmap_new(w->window,win2sizex,win2sizey,depth);
+ gbackg2=gdk_pixmap_new(w->window,win2sizex,win2sizey,gdk_drawable_get_depth(w->window));
gtk_signal_connect( GTK_OBJECT(w), "expose_event", GTK_SIGNAL_FUNC(expose_event2), NULL);
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list