Thanks. Try SVN 1249. I had to make changes to the LXT, LXT2, VZT, and FSDB loaders as they all used the same cut-and-paste code for handling endcaps during trace creation. That bug has been in there for a long time--perhaps 15 years. I suppose it either shows how often real numbers are used or how users won't report bugs. Thanks for reporting that.
As far as binding to specific keys, look at the accel lines in examples/gtkwaverc:
accel "/File/Open New Window" <Control>N
You can have a .gtkwaverc file in your current working directory, home directory, or specify it at the command line via --rcfile.
-Tony
---- R B <bro...@gm...> wrote:
> Attached a sample LXT file. Try the "invout" signal. Thanks.
>
> off-topic: Can I define bind-keys for things like assign specific
> format, add/delete analog height extension?
>
> On Sat, Mar 17, 2018 at 9:36 AM, <by...@nc...> wrote:
> > I'd need to see that LXT file. I've never seen that kind of crash before. ngspice might be doing something in the writer
> > that is incorrect that I need to take care of.
> >
> > -Tony
> >
> >
> > ---- R B <bro...@gm...> wrote:
> >> Hi,
> >> I load an LXT file (written by ngspice), select an analog signal
> >> (optionally format as analog-step),
> >> then click Find-Next-Edge (or previous), and I get a segfault I
> >> suspect when: trying to find past the
> >> last (or first for previous) data-point of that signal.
> >>
> >> Is it a known limitation? If reason to suspect newer version (than
> >> v3.3.87) already fixes it, I can try it.
> >>
> >> [sorry for duplicate post under unregistered email]
> >> Thanks,
> >> -Sto
> >>
> >> Example stacktrace:
> >>
> >> GTKWave Analyzer v3.3.87 (w)1999-2017 BSI
> >>
> >> LXTLOAD | 8 facilities
> >> LXTLOAD | Read 504 block headers OK
> >> LXTLOAD | [0] start time
> >> LXTLOAD | [1000000] end time
> >> LXTLOAD |
> >> LXTLOAD | Finished building 8 facs.
> >> LXTLOAD | Building facility hierarchy tree.
> >> LXTLOAD | Sorting facility hierarchy tree.
> >> LXTLOAD | block [0] processing 0 / 10
> >> LXTLOAD | block [1] processing 40 / 80
> >> LXTLOAD | block [2] processing 160 / 320
> >> LXTLOAD | block [3] processing 640 / 1280
> >> LXTLOAD | block [4] processing 2280 / 3280 ...
> >> LXTLOAD | block [503] processed 1000000 / 1000000
> >>
> >> Program received signal SIGSEGV, Segmentation fault.
> >> convert_ascii_vec_2 (t=0x87aeb0, vec=0x1 <Address 0x1 out of bounds>)
> >> at baseconvert.c:968
> >> 968 if(*vec>AN_MSK) /* convert as needed */
> >> Missing separate debuginfos, use: ...
> >> (gdb) where
> >> #0 convert_ascii_vec_2 (t=0x87aeb0, vec=0x1 <Address 0x1 out of
> >> bounds>) at baseconvert.c:968
> >> #1 0x0000000000414bc9 in convert_ascii_vec (t=0x87aeb0, vec=Unhandled
> >> dwarf expression opcode 0xf3
> >> ) at baseconvert.c:1602
> >> #2 0x000000000041c525 in edge_search_2 (direction=1,
> >> is_last_iteration=1) at edgebuttons.c:345
> >> #3 0x000000000041c7dc in edge_search (direction=1) at edgebuttons.c:506
> >> #4 0x00000032fd20e3de in g_closure_invoke () from /lib64/libgobject-2.0.so.0
> >> #5 0x00000032fd2248d5 in ?? () from /lib64/libgobject-2.0.so.0
> >> #6 0x00000032fd225d76 in g_signal_emit_valist () from
> >> /lib64/libgobject-2.0.so.0
> >> #7 0x00000032fd226333 in g_signal_emit () from /lib64/libgobject-2.0.so.0
> >> #8 0x00000032d8a910a5 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
> >> #9 0x00000032fd20e3de in g_closure_invoke () from /lib64/libgobject-2.0.so.0
> >> #10 0x00000032fd2241a8 in ?? () from /lib64/libgobject-2.0.so.0
> >> #11 0x00000032fd225d76 in g_signal_emit_valist () from
> >> /lib64/libgobject-2.0.so.0
> >> #12 0x00000032fd226333 in g_signal_emit () from /lib64/libgobject-2.0.so.0
> >> #13 0x00000032d8a8fa97 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
> >> #14 0x00000032d8b559d3 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
> >> #15 0x00000032fd20e3de in g_closure_invoke () from /lib64/libgobject-2.0.so.0
> >> #16 0x00000032fd22451f in ?? () from /lib64/libgobject-2.0.so.0
> >> #17 0x00000032fd225bbb in g_signal_emit_valist () from
> >> /lib64/libgobject-2.0.so.0
> >> #18 0x00000032fd226333 in g_signal_emit () from /lib64/libgobject-2.0.so.0
> >> #19 0x00000032d8c88c1f in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
> >> #20 0x00000032d8b4c6e3 in gtk_propagate_event () from
> >> /usr/lib64/libgtk-x11-2.0.so.0
> >> #21 0x00000032d8b4d87b in gtk_main_do_event () from
> >> /usr/lib64/libgtk-x11-2.0.so.0
> >> #22 0x00000032d866344c in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
> >> #23 0x00000032fb240642 in g_main_context_dispatch () from
> >> /lib64/libglib-2.0.so.0
> >> #24 0x00000032fb244c98 in ?? () from /lib64/libglib-2.0.so.0
> >> #25 0x00000032fb2451a5 in g_main_loop_run () from /lib64/libglib-2.0.so.0
> >> #26 0x00000032d8b4dd17 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
> >> #27 0x0000000000440820 in main_2 (opt_vcd=0, argc=2,
> >> argv=0x7fffffffdd88) at main.c:2707
> >> #28 0x00000032f9a1ed1d in __libc_start_main () from /lib64/libc.so.6
> >> #29 0x000000000040c42d in _start ()
> >> (gdb) list
> >> 963 nbits++;
> >> 964
> >> 965 if(vec)
> >> 966 {
> >> 967 bits=vec;
> >> 968 if(*vec>AN_MSK) /* convert as needed */
> >> 969 for(i=0;i<nbits;i++)
> >> 970 {
> >> 971 switch(*(vec))
> >> 972 {
> >> (gdb) up
> >> #1 0x0000000000414bc9 in convert_ascii_vec (t=0x87aeb0, vec=Unhandled
> >> dwarf expression opcode 0xf3
> >> ) at baseconvert.c:1602
> >> 1602 char *s = convert_ascii_vec_2(t, vec);
> >> (gdb) list
> >> 1597 }
> >> 1598
> >> 1599
> >> 1600 char *convert_ascii_vec(Trptr t, char *vec)
> >> 1601 {
> >> 1602 char *s = convert_ascii_vec_2(t, vec);
> >> 1603
> >> 1604 if(!(t->f_filter|t->p_filter))
> >> 1605 {
> >> 1606 }
> >> (gdb) up
> >> #2 0x000000000041c525 in edge_search_2 (direction=1,
> >> is_last_iteration=1) at edgebuttons.c:345
> >> 345
> >> chval=convert_ascii_vec(t,s->his.h->v.h_vector);
> >> (gdb) list
> >> 340 }
> >> 341 }
> >> 342 }
> >> 343 else
> >> 344 {
> >> 345
> >> chval=convert_ascii_vec(t,s->his.h->v.h_vector);
> >> 346 }
> >> 347 }
> >> 348
> >> 349 switch(s->value)
> >> (gdb) up
> >> #3 0x000000000041c7dc in edge_search (direction=1) at edgebuttons.c:506
> >> 506 edge_search_2(direction, (i == i_high_cnt));
> >> (gdb) list
> >> 501 int i;
> >> 502 int i_high_cnt = ((GLOBALS->strace_repeat_count > 0) ?
> >> GLOBALS->strace_repeat_count : 1) - 1;
> >> 503
> >> 504 for(i=0;i<=i_high_cnt;i++)
> >> 505 {
> >> 506 edge_search_2(direction, (i == i_high_cnt));
> >> 507 }
> >> 508 }
> >> 509
> >> 510 /************************************************/
> >>
> >> ------------------------------------------------------------------------------
> >> Check out the vibrant tech community on one of the world's most
> >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> >> _______________________________________________
> >> Gtkwave-users mailing list
> >> Gtk...@li...
> >> https://lists.sourceforge.net/lists/listinfo/gtkwave-users
> >
|