Re: dia SIGSEGV when I move Class object



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]