Re: dia SIGSEGV when I move Class object
- From: Dmitry Perfilyev <dp co ru>
- To: dia-list gnome org
- Subject: Re: dia SIGSEGV when I move Class object
- Date: Fri, 29 Aug 2003 12:57:49 +0400
Of course the fact that GDB itself is broken by this point indicates some
runaway pointer bug earlier on. I hate those things. Maybe valgrind or
what's-it-called on Solaris would be the best to diagnose this.
I've replaced standart Sun (from sunsolve) libexpat package to
self-compilled version expat-1.95.6 and GDB error disappeared.
And stack:
(gdb) where
#0 0xfe50e71c in umlclass_update_data (umlclass=0x312640) at class.c:564
[...]
Scary, that line reads:
umlclass->connections[0].pos = elem->corner;
In my gdb that line reads:
(gdb) f
#0 0xfe54e71c in umlclass_update_data (umlclass=0x2efa38) at class.c:564
564 pointspacing = elem->width / (pointswide + 1.0);
(gdb) list class.c:564
559
560 /* there are four corner points and two side points, thus all
561 * remaining points are on the top/bottom width
562 */
563 pointswide = (UMLCLASS_CONNECTIONPOINTS - 6) / 2;
564 pointspacing = elem->width / (pointswide + 1.0);
565
566 /* across the top connection points */
567 for (i=1;i<=pointswide;i++) {
568 umlclass->connections[i].pos.x = x + (pointspacing * i);
which is no different than what the other objects do. Can you check what
the other objects involved are, to see which one is the core dumper?
I.e. umlclass->connections, umlclass->connections[0], elem.
There is only one object "Class" in the page.
Sequence: New -> Place UML Class object on the page -> try to move -> core
(gdb) p umlclass->connections
$14 = {{
pos = {x = 16.350000000000001, y = 4.4000000000000004}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'},{
pos = {x = 17.700000000000003, y = 4.4000000000000004}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}, {
pos = {x = 19.050000000000001, y = 4.4000000000000004}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}, {
pos = {x = 16.350000000000001, y = 5.1000000000000005}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}, {
pos = {x = 19.050000000000001, y = 5.1000000000000005}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}, {
pos = {x = 16.350000000000001, y = 6.5999999999999996}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}, {
pos = {x = 17.700000000000003, y = 6.5999999999999996}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}, {
pos = {x = 19.050000000000001, y = 6.5999999999999996}, last_pos = {x = 0,
y = 0}, object = 0x2efa38, connected = 0x0, directions = 0 '\0'}}
(gdb) p *elem
$20 = {
object = {
type = 0xfe57f2d0,
position = {
x = 16.350000000000001,
y = 4.4000000000000004
},
bounding_box = {
top = 3.6500000000000004,
left = 16.300000000000001,
bottom = 6.6499999999999995,
right = 19.5
},
num_handles = 8,
handles = 0x2e7a80,
num_connections = 8,
connections = 0x2c5af8,
ops = 0xfe57f2e8,
parent_layer = 0x2cc2c0
},
resize_handles = {{
id = HANDLE_RESIZE_NW,
type = HANDLE_NON_MOVABLE,
pos = {
x = 16.350000000000001,
y = 4.4000000000000004
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_N,
type = HANDLE_NON_MOVABLE,
pos = {
x = 17.700000000000003,
y = 4.4000000000000004
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_NE,
type = HANDLE_NON_MOVABLE,
pos = {
x = 19.050000000000001,
y = 4.4000000000000004
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_W,
type = HANDLE_NON_MOVABLE,
pos = {
x = 16.350000000000001,
y = 5.5
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_E,
type = HANDLE_NON_MOVABLE,
pos = {
x = 19.050000000000001,
y = 5.5
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_SW,
type = HANDLE_NON_MOVABLE,
pos = {
x = 16.350000000000001,
y = 6.5999999999999996
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_S,
type = HANDLE_NON_MOVABLE,
pos = {
x = 17.700000000000003,
y = 6.5999999999999996
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}, {
id = HANDLE_RESIZE_SE,
type = HANDLE_NON_MOVABLE,
pos = {
x = 19.050000000000001,
y = 6.5999999999999996
},
connect_type = HANDLE_NONCONNECTABLE,
connected_to = 0x0
}},
corner = {
x = 15.700000000000003,
y = 4.4000000000000004
},
width = 2.7000000000000002,
height = 2.1999999999999997,
extra_spacing = {
border_trans = 0.050000000000000003
}
}
I'd love to see Dia working on Solaris. Hey, I'd even let Sun pay me to
work on it:)
And includes Dia in StarOffice ;)
--
Dmitry Perfilyev
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]