[Home]

Summary:ASTERISK-03302: Gastman command window history mechanism causes crashes, needs work
Reporter:Steve Murphy (murf)Labels:
Date Opened:2005-01-18 10:38:24.000-0600Date Closed:2011-06-07 14:10:46
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:Gastman, in the command window, has some definite probs when the output gets big.
Right now, if I were in an asterisk -r session, a 'database show' command would yield 36K of output.
I've modified gastman to have 8000 chars of history, and only 8193 chars of output are shown by gastman for the same command. It "feels" like a buffer overflowed, because a crash will result with more poking around.

****** STEPS TO REPRODUCE ******

build a database with hundreds of elements. Have at least 35K of data generated when you type "database show". Then do a 'database showkey tree/key' twice on the same key. For me, the  second showkey command results always in crash in the gtk code. If you don't do a "database show" first, you can type these same showkey commands dozens of times with no problems.



****** ADDITIONAL INFORMATION ******

I get the "feel" that gastman was not written with large datasets/command histories in mind.
Comments:By: Tilghman Lesher (tilghman) 2005-01-18 11:28:25.000-0600

This is not about command history; command history supports up to 1000 commands.  Instead, this is about output capacity per command, which is currently 1000 characters per line and 256 lines.  If you wish to increase this, you can change MAX_HEADERS and MAX_LEN in gastman.c and recompile.

By: Steve Murphy (murf) 2005-01-18 12:11:45.000-0600

Uh, excuse me! You might recommend some values for the above, as when I increase either or both, the behavior of the program does not change! the output is still chopped to 8192 chars, and the program still crashes in the exact same manner.
The only difference I can see is the program takes an extra second or two to start up and be ready for action.

edited on: 01-18-05 12:13

By: nick (nick) 2005-01-18 13:11:24.000-0600

I wouldn't conisider 'not crashing' a feature request... please read and choose carefully before opening bugs.

By: Steve Murphy (murf) 2005-01-18 13:36:43.000-0600

blush--

didn't realize I had that field set, left over from a previous submission. Yes, this is meant to be a real live bug report. But, gastman doesn't have a category for bugs to be reported anyway (as far as I could see).

By: twisted (twisted) 2005-01-18 15:30:33.000-0600

That's because gastman is a different project than Asterisk, and this is the asterisk bug tracker.

By: Mark Spencer (markster) 2005-02-06 21:50:40.000-0600

Well, in the absense of a "gastman bugtracker" i think we'll have to keep the discussion here.  Can you tell if it has to do with the width of the columns or the total datasize?  I've tried duplicating this crash without success...

By: Mark Spencer (markster) 2005-02-11 01:19:45.000-0600

Okay one last try to solicit a response...  Is the problem the width of the columns or total datasize?

By: Steve Murphy (murf) 2005-02-11 08:42:39.000-0600

Sorry-- I've been a bit busy. I'll try to determine which today. I have
some ideas as to things to try.

By: Mark Spencer (markster) 2005-02-19 15:20:22.000-0600

Any more progress?

By: Steve Murphy (murf) 2005-02-21 00:02:31.000-0600

Sorry for the wait. I've been up to my ears these days.

This is what I've done so far. I checked out gastman by these steps:

export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
cvs login
cvs checkout gastman
cd gastman
make
make install
gastman


This ie pretty elementary, I know, but I have made mods to my current
gastman to avert crashes, and who knows but what I've hozed myself royal
in the process, and got you all worked up over nothing.

Actually, I did two make installs, one on the same machine asterisk is running on, which was kinda useless, as it doesn't run an X server, and the other
on the system where I do have an X server running. I ran from the other machine.

I'm running on Fedora Core 3. I'd bet anything the debian guys on the mailing lists would say that this is my first mistake...!

Once in gastman, and logged into the server, I simply did:

database show

and then:

database show

again. Gastman crashes this time, its window winking out of existence...

I took the results of the first command, and copied it all into a file.
I then did 'ls -l' on the file: size is 8193 bytes. Hmmm. It's cut short
at the end, right in the middle of a line of output. Actually, only a quarter
of the total output is shown.

So, you ask, is it the because of long lines? I don't think so. The longest line is 113 chars long. The rest seem to average somewhere near 80.


Is it because of too many lines? The 8193 chars spanned 105 lines. Looks to me like 8192 ia the magic number here.

By: Steve Murphy (murf) 2005-02-21 00:12:00.000-0600

Hmmm. more info.

I just tried the whole thing one more time. And I could do one
'database show' after another after another with no problems.

I tried interspersing some "help database" and other smaller commands,
no crash.

Hmmm. Was I using a different version? No.

What else did I do that might cause the crash? Um, I did copy and paste
from the gastman window into a file via vi, so I could measure the output...
I did that again, and BAM! a crash on the next "database show".

So, it looks copy/paste is a factor. I hadn't suspected this previously! I shake my head. The fuzzy line between superstition and science.

By: Mark Spencer (markster) 2005-02-21 00:21:30.000-0600

I cannot duplicate this at all.  Could it be related to the version of gtk you have installed?

By: Tilghman Lesher (tilghman) 2005-02-21 00:39:33.000-0600

Are you perhaps using GTK 1.2?  The lastest 1.2 version was released in 2001 and has not had any maintenance patches released since that date, and it is highly unlikely there will be any.  If you're not already on 2.x, you should probably upgrade soon.

The installed versions can be obtained by the commands:
gtk-config --version
pkg-config --modversion gtk+-2.0

By: Steve Murphy (murf) 2005-02-21 11:05:15.000-0600

Hmmm. It seems to be boiling down to a config issue?  As I've reported
before, I'm running FC3.

There is no gtk-config. The blurb for FC3 says I'm using gnome 2.8. I'm using
evolution 2.0.2;

pkg-config --modversion gtk+-2.0 returns:

2.4.14


Here's a list of packages installed that have gtk in the title:

pygtk2-libglade-2.4.0-1
authconfig-gtk-4.6.5-3.1
gtk+-1.2.10-33
aiksaurus-gtk-1.2.1-2
gtk2-devel-2.4.14-2.fc3
pygtk2-2.4.0-1
gtkspell-2.0.7-2
gtk2-engines-2.2.0-6
pygtk2-devel-2.4.0-1
gtkhtml2-2.6.2-1
gtkhtml3-3.3.2-3
gtksourceview-1.1.0-4.fc3
gtk2-2.4.14-2.fc3
gnome-python2-gtkhtml2-2.6.0-3
usermode-gtk-1.74-1
gtkhtml-1.1.9-10
gtk-engines-0.12-5
gtk-doc-1.2-2
iiimf-gtk-12.1-10.FC3

And, looking in /usr/lib, here's what there is that has gtk in the
file or dirname:

ls *gtk*
libgconf-gtk-1.so.1      lib-gnu-java-awt-peer-gtk.so.5      libgtkembedmoz.so        libgtkhtml-2.so.0.0.0      libgtksourceview-1.0.so.0.0.0  libgtk-x11-2.0.so           libgtkxmhtml.so.1.0.1
libgconf-gtk-1.so.1.0.0  lib-gnu-java-awt-peer-gtk.so.5.0.0  libgtkhtml-1.1.so.3      libgtkhtml-3.1.so.11       libgtkspell.so.0               libgtk-x11-2.0.so.0         libgtkxtbin.so
libgnorbagtk.so.0        libgtk-1.2.so.0                     libgtkhtml-1.1.so.3.0.4  libgtkhtml-3.1.so.11.0.4   libgtkspell.so.0.0.0           libgtk-x11-2.0.so.0.400.14
libgnorbagtk.so.0.0.0    libgtk-1.2.so.0.9.1                 libgtkhtml-2.so.0        libgtksourceview-1.0.so.0  libgtksuperwin.so              libgtkxmhtml.so.1

gtk:
themes

gtk-2.0:
2.4.0  include  modules

gtkhtml:
libgnome-gtkhtml-editor-3.1.so

----------- And here's what's in gtk-2.0

[root@monster lib]# ls gtk-2.0/*
gtk-2.0/2.4.0:
engines  filesystems  immodules  loaders

gtk-2.0/include:
gdkconfig.h

gtk-2.0/modules:
libatk-bridge.la  libatk-bridge.so  libdwellmouselistener.so  libferret.la  libferret.so  libgail-gnome.la  libgail-gnome.so  libgail.la  libgail.so  libkeymouselistener.so

This may boild down to some magic in the makefile?

By: Mark Spencer (markster) 2005-02-26 10:43:53.000-0600

Will gastman run under valgrind?

By: Steve Murphy (murf) 2005-02-26 18:10:46.000-0600

Gastman compiles with -g as-is, so I fired it up under the debugger and
did my stuff.

I tried "show application dial" and selected some text from that.
Then I did "show application dial" again. No crash. So I selected text
again, and did "show application gotoif" and no crash. Then did a
"database show", whose output was cut off at 8k, and then selected text,
a couple lines, then did another "database show", and bang, a crash.

Here's the stack trace:


(gdb) where
#0  0x0027260d in gtk_text_set_point () from /usr/lib/libgtk-x11-2.0.so.0
#1  0x00273908 in gtk_text_set_point () from /usr/lib/libgtk-x11-2.0.so.0
#2  0x00af63ae in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#3  0x00ade347 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#4  0x00af4ae1 in g_signal_has_handler_pending () from /usr/lib/libgobject-2.0.so.0
ASTERISK-1  0x00af5cbc in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
ASTERISK-2  0x00255383 in gtk_signal_emit_by_name () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-3  0x0026fdd0 in gtk_text_freeze () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-4  0x00271a8b in gtk_text_set_point () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-5  0x00271c4d in gtk_text_set_point () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-6 0x00276696 in gtk_text_set_adjustments () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-7 0x00276757 in gtk_text_thaw () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-8 0x08057fbf in gui_cli_result (
   s=0x80e6540 "/IAX/Registry/murfiaxphone", ' ' <repeats 24 times>, ": 192.168.134.251:4569:60  \n/RyanDirect/3075275310", ' ' <repeats 28 times>, ": 1", ' ' <repeats 24 times>, "\n/RyanDirect/3075275822", ' ' <repeats 22 times>...) at gui.c:2040
ASTERISK-9 0x0805028a in gastman_run_command (cmd=0x8823d78 "database show") at gastman.c:1368
ASTERISK-10 0x080544d3 in command_ready (widget=0x881b630, data=0x0) at gui.c:1023
ASTERISK-11 0x00af63ae in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
ASTERISK-12 0x00ade347 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
ASTERISK-13 0x00af4ae1 in g_signal_has_handler_pending () from /usr/lib/libgobject-2.0.so.0
ASTERISK-14 0x00af6287 in g_signal_emitv () from /usr/lib/libgobject-2.0.so.0
ASTERISK-15 0x001517d3 in gtk_bin_get_child () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-16 0x00152a57 in gtk_binding_set_by_class () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-17 0x00152cae in gtk_binding_set_by_class () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-18 0x00152ef1 in gtk_bindings_activate_event () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-19 0x003023e9 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-20 0x001b010d in gtk_entry_set_visibility () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-21 0x0020e757 in gtk_marshal_VOID__UINT_STRING () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-22 0x00ade6b2 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
ASTERISK-23 0x00ade347 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
ASTERISK-24 0x00af4646 in g_signal_has_handler_pending () from /usr/lib/libgobject-2.0.so.0
ASTERISK-25 0x00af5913 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
ASTERISK-26 0x00af5f5a in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
ASTERISK-27 0x00302545 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-28 0x00312c16 in gtk_window_propagate_key_event () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-29 0x003177cb in gtk_window_activate_key () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-30 0x0020e757 in gtk_marshal_VOID__UINT_STRING () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-31 0x00ade6b2 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
ASTERISK-32 0x00ade347 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
ASTERISK-33 0x00af4646 in g_signal_has_handler_pending () from /usr/lib/libgobject-2.0.so.0
ASTERISK-34 0x00af5913 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
ASTERISK-35 0x00af5f5a in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
ASTERISK-36 0x00302545 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-37 0x0020cb6a in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-38 0x0020cd20 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-39 0x00c3e0a2 in gdk_event_get_graphics_expose () from /usr/lib/libgdk-x11-2.0.so.0
ASTERISK-40 0x00a567bb in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
ASTERISK-41 0x00a58242 in g_main_context_acquire () from /usr/lib/libglib-2.0.so.0
ASTERISK-42 0x00a584ef in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
ASTERISK-43 0x0020c07e in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
ASTERISK-44 0x08056d95 in gui_run () at gui.c:1604
ASTERISK-45 0x080511a4 in manage_calls (host=0xbff02730 "phone") at gastman.c:1706
ASTERISK-46 0x080517f6 in main (argc=0, argv=0xbff028c8) at gastman.c:1868

By: Mark Spencer (markster) 2005-03-10 02:58:39.000-0600

This is pretty much meaningless.  Try it under valgrind and see if you can find the real cause.  Without more information, I guess I have to just shrug this off as a GTK issue, as I cannot duplicate this.

By: Brian West (bkw918) 2005-03-17 21:14:29.000-0600

Murf if this is still a problem please find someone to reopen it or I think you'll be able to do it.  If not find someone in #asterisk-bugs.

Thanks,
/b