bug-ddd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ddd 3.3.11 hangs when attached to a program with unbound output


From: Peter Wainwright
Subject: Re: ddd 3.3.11 hangs when attached to a program with unbound output
Date: Fri, 29 Aug 2008 16:29:21 +0100

I can't replicate exactly the same behaviour on my DDD 3.3.11 or
3.3.12-test3 (x86_64-unknown-linux-gnu).  Instead, ddd crashes with an X
error:

!  X error
X Error of failed request:  BadLength (poly request too large or
internal Xlib length error)
  Major opcode of failed request:  74 (X_PolyText8)
  Serial number of failed request:  21264
  Current serial number in output stream:  21265
!  X error
!  Aborted

At a guess, this happens because there are no newlines in the output.
DDD is trying to write a single line of constantly increasing length.
This is one of the reasons I almost always use a separate execution
window.  As it stands, DDD receives program output mixed with that of
gdb, and often gets confused between the two.

Peter

On Thu, 2008-08-28 at 20:57 -0700, Eric Hattemer wrote:
> Both:
> GNU DDD 3.3.11 (sparc-sun-solaris2.8)
> Copyright (C) 1995-1999 Technische Universität Braunschweig, Germany.
> Copyright (C) 1999-2001 Universität Passau, Germany.
> Copyright (C) 2001 Universität des Saarlandes, Germany.
> Copyright (C) 2001-2004 Free Software Foundation, Inc.
> 
> Compiled with GCC 3.3.2
> Requires X11R6, Xt11R6, Motif 2.1 (Motif Version 2.1.0)
> Includes XPM 3.4.7, Athena Panner, DDD core, Readline 5.0
> Built 2007-11-21 by ehatteme <ehatteme@mesa.usc.edu>.
> 
> and
> 
> GNU DDD 3.3.11 (sparc-sun-solaris2.10)
> Copyright (C) 1995-1999 Technische Universität Braunschweig, Germany.
> Copyright (C) 1999-2001 Universität Passau, Germany.
> Copyright (C) 2001 Universität des Saarlandes, Germany.
> Copyright (C) 2001-2004 Free Software Foundation, Inc.
> 
> Compiled with GCC 4.2.1
> Requires X11R6, Xt11R6, Motif 2.1 (Motif Version 2.1.0)
> Includes XPM 3.4.7, Athena Panner, DDD core, Readline 5.0
> Built 2008-08-28 by ehatteme <ehatteme@sol.usc.edu>.
> 
> hang if they run a program that prints to stdout in an infinite loop.  
> This only occurs if the stdout is going to the gdb pane at the bottom of 
> ddd.  If the program is run in a execution window, it prints fine, and 
> can be interrupted.  The program can be interrupted in straight gdb.  It 
> seems that the bug is related to the handling/buffering of the gdb pane 
> at the bottom of ddd.
> 
> Here is the c++ code that causes the hang after entering an input >2:
> 
> #include <iostream>
> 
> using namespace std;
> 
> // finds all of n's factors
> // not including 1 and itself
> void factors (int n)
> {
>   int k = 2;
>   while (k < n) {
>     if (n % k == 0) {
>       cout << k << " ";
>     }
>   }
> }
> 
> int main()
> {
>   int n;
>   cout << "Find factors of what number? ";
>   cin >> n;
>   cout << "Factors of n are: " << endl;
>   factors (n);
>   cout << endl;
> }
> 
> Attached is .ddd/log with most of the 2's cut out of it.
> 
> -Eric Hattemer
> 
> 
> 
> plain text document attachment (log)
> GNU DDD 3.3.11 (sparc-sun-solaris2.8)
> Copyright (C) 1995-1999 Technische Universitt Braunschweig, Germany.
> Copyright (C) 1999-2001 Universitt Passau, Germany.
> Copyright (C) 2001 Universitt des Saarlandes, Germany.
> Copyright (C) 2001-2004 Free Software Foundation, Inc.
> 
> Compiled with GCC 3.3.2
> Requires X11R6, Xt11R6, Motif 2.1 (Motif Version 2.1.0)
> Includes XPM 3.4.7, Athena Panner, DDD core, Readline 5.0
> Built 2007-11-21 by ehatteme <ehatteme@mesa.usc.edu>.
> $  ddd ./factors
> +  /bin/sh -c 'exec gdb -q -fullname '\''./factors'\'''
> #  Hello, world!
> #  Starting GDB...
> #  Running GDB (pid 27377, tty /dev/pts/1)...
> #  Current language: C/C++
> #  Searching "vsllib/ddd.vsl"...
> #  Trying "/home/sol-00/ehatteme/.ddd/vsllib/ddd.vsl"
> #  Trying "/usr/usc/ddd/3.3.11/share/ddd-3.3.11/vsllib/ddd.vsl"
> #  Searching 
> "vsllib/ddd.vsl"..."/usr/usc/ddd/3.3.11/share/ddd-3.3.11/vsllib/ddd.vsl".
> #  Another DDD is running (pid 28218, host bb-dev1.usc.edu, display 
> localhost:10.0)
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "set prompt (gdb) \n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "set height 0\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "set width 0\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "set annotate 1\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> " set verbose off\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "info line\n"
> 2008.08.28 20:51:12
> <- "No line number information available.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "list\n"
> 2008.08.28 20:51:12
> <- "16\t    \n"
>    "17\t  }\n"
>    "18\t\n"
>    "19\t}\n"
>    "20\t\n"
>    "21\tint main()\n"
>    "22\t{\n"
>    "23\t  int n;\n"
>    "24\t\n"
>    "25\t  cout << \"Find factors of what number? \";\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "info line\n"
> 2008.08.28 20:51:12
> <- "Line 25 of \"factors.cpp\" starts at address 0x10cb0 <main+4> and ends at 
> 0x10cc8 <main+28>.\n"
>    "\032\032/home/sol-00/ehatteme/factors.cpp:25:257:beg:0x10cb0\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "output 4711\n"
> 2008.08.28 20:51:12
> <- "4711"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "show language\n"
> 2008.08.28 20:51:12
> <- "The current source language is \"auto; currently c++\".\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "show version\n"
> 2008.08.28 20:51:12
> <- "GNU gdb 6.8\n"
>    "Copyright (C) 2008 Free Software Foundation, Inc.\n"
>    "License GPLv3+: GNU GPL version 3 or later 
> <http://gnu.org/licenses/gpl.html>\n"
>    "This is free software: you are free to change and redistribute it.\n"
>    "There is NO WARRANTY, to the extent permitted by law.  Type \"show 
> copying\"\n"
>    "and \"show warranty\" for details.\n"
>    "This GDB was configured as \"sparc-sun-solaris2.10\".\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "pwd\n"
> 2008.08.28 20:51:12
> <- "Working directory /home/sol-00/ehatteme.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "info breakpoints\n"
> 2008.08.28 20:51:12
> <- "No breakpoints or watchpoints.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "show history filename\n"
> 2008.08.28 20:51:12
> <- "The filename in which to record the command history is 
> \"/home/sol-00/ehatteme/.gdb_history\".\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "show history size\n"
> 2008.08.28 20:51:12
> <- "The size of the command history is 256.\n"
>    "(gdb) "
> #  Reading file "/home/sol-00/ehatteme/factors.cpp"...
> #  Reading file "/home/sol-00/ehatteme/factors.cpp"...done.
> #  File "/home/sol-00/ehatteme/factors.cpp" 30 lines, 409 characters
> #  Setting buttons...
> #  Setting buttons...done.
> 2008.08.28 20:51:12
> -> "info source\n"
> 2008.08.28 20:51:12
> <- "Current source file is factors.cpp\n"
>    "Compilation directory is /home/sol-00/ehatteme\n"
>    "Located in /home/sol-00/ehatteme/factors.cpp\n"
>    "Contains 30 lines.\n"
>    "Source language is c++.\n"
>    "Compiled with DWARF 2 debugging format.\n"
>    "Does not include preprocessor macro info.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "info files\n"
> 2008.08.28 20:51:12
> <- "Symbols from \"/home/sol-00/ehatteme/factors\".\n"
>    "Local exec file:\n"
> 2008.08.28 20:51:12
> <- "\t`/home/sol-00/ehatteme/factors\', file type elf32-sparc.\n"
>    "\tEntry point: 0x10998\t0x000100d4 - 0x000100e5 is .interp\n"
>    "\t0x000100e8 - 0x0001024c is .hash\n"
>    "\t0x0001024c - 0x0001050c is .dynsym\n"
>    "\t0x0001050c - 0x0001085a is .dynstr\n"
>    "\t0x0001085c - 0x0001089c is .SUNW_version\n"
>    "\t0x0001089c - 0x000108c0 is .rela.got\n"
>    "\t0x000108c0 - 0x000108e4 is .rela.bss\n"
>    "\t0x000108e4 - 0x00010998 is .rela.plt\n"
>    "\t0x00010998 - 0x00010e74 is .text\n"
>    "\t0x00010e74 - 0x00010e90 is .init\n"
>    "\t0x00010e90 - 0x00010ea4 is .fini\n"
>    "\t0x00010ea8 - 0x00010eeb is .rodata\n"
>    "\t0x00010eec - 0x00010ef0 is 
> .gnu.linkonce.r._ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE\n"
>    "\t0x00020ef0 - 0x00020f18 is .got\n"
>    "\t0x00020f18 - 0x00021000 is .plt\n"
>    "\t0x00021000 - 0x000210e0 is .dynamic\n"
>    "\t0x000210e0 - 0x000210ec is .data\n"
>    "\t0x000210ec - 0x000210f8 is .ctors\n"
>    "\t0x000210f8 - 0x00021104 is .dtors\n"
>    "\t0x00021104 - 0x000211b0 is .eh_frame\n"
>    "\t0x000211b0 - 0x000211b4 is .jcr\n"
>    "\t0x000211b4 - 0x000211b8 is .data.rel.local\n"
>    "\t0x000211b8 - 0x000211b9 is 
> .gnu.linkonce.d._ZN16__Atomicity_lockILi0EE17_S_atomicity_lockE\n"
>    "\t0x000211c0 - 0x00021300 is .bss\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "info program\n"
> 2008.08.28 20:51:12
> <- "The program being debugged is not being run.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "set confirm off\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "source /var/tmp//dddZJa4D1\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "info breakpoints\n"
> 2008.08.28 20:51:12
> <- "No breakpoints or watchpoints.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "# reset\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "info breakpoints\n"
> 2008.08.28 20:51:12
> <- "No breakpoints or watchpoints.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "display\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "info display\n"
> 2008.08.28 20:51:12
> <- "There are no auto-display expressions now.\n"
>    "(gdb) "
> 2008.08.28 20:51:12
> -> "set environment TERM dumb\n"
> 2008.08.28 20:51:12
> <- "(gdb) "
> 2008.08.28 20:51:12
> -> "info files\n"
> 2008.08.28 20:51:13
> <- "Symbols from \"/home/sol-00/ehatteme/factors\".\n"
>    "Local exec file:\n"
>    "\t`/home/sol-00/ehatteme/factors\', file type elf32-sparc.\n"
>    "\tEntry point: 0x10998\t0x000100d4 - 0x000100e5 is .interp\n"
>    "\t0x000100e8 - 0x0001024c is .hash\n"
>    "\t0x0001024c - 0x0001050c is .dynsym\n"
>    "\t0x0001050c - 0x0001085a is .dynstr\n"
>    "\t0x0001085c - 0x0001089c is .SUNW_version\n"
>    "\t0x0001089c - 0x000108c0 is .rela.got\n"
>    "\t0x000108c0 - 0x000108e4 is .rela.bss\n"
>    "\t0x000108e4 - 0x00010998 is .rela.plt\n"
>    "\t0x00010998 - 0x00010e74 is .text\n"
>    "\t0x00010e74 - 0x00010e90 is .init\n"
>    "\t0x00010e90 - 0x00010ea4 is .fini\n"
>    "\t0x00010ea8 - 0x00010eeb is .rodata\n"
>    "\t0x00010eec - 0x00010ef0 is 
> .gnu.linkonce.r._ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE\n"
>    "\t0x00020ef0 - 0x00020f18 is .got\n"
>    "\t0x00020f18 - 0x00021000 is .plt\n"
>    "\t0x00021000 - 0x000210e0 is .dynamic\n"
>    "\t0x000210e0 - 0x000210ec"
> 2008.08.28 20:51:13
> <- " is .data\n"
>    "\t0x000210ec - 0x000210f8 is .ctors\n"
>    "\t0x000210f8 - 0x00021104 is .dtors\n"
>    "\t0x00021104 - 0x000211b0 is .eh_frame\n"
>    "\t0x000211b0 - 0x000211b4 is .jcr\n"
>    "\t0x000211b4 - 0x000211b8 is .data.rel.local\n"
>    "\t0x000211b8 - 0x000211b9 is 
> .gnu.linkonce.d._ZN16__Atomicity_lockILi0EE17_S_atomicity_lockE\n"
>    "\t0x000211c0 - 0x00021300 is .bss\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "info program\n"
> 2008.08.28 20:51:13
> <- "The program being debugged is not being run.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help detach\n"
> 2008.08.28 20:51:13
> <- "Detach a process or file previously attached.\n"
>    "If a process, it is no longer traced, and it continues its execution.  
> If\n"
>    "you were debugging a file, the file is closed and gdb no longer accesses 
> it.\n"
>    "\n"
>    "List of detach subcommands:\n"
>    "\n"
>    "\n"
>    "Type \"help detach\" followed by detach subcommand name for full 
> documentation.\n"
>    "Type \"apropos word\" to search for commands related to \"word\".\n"
>    "Command name abbreviations are allowed if unambiguous.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help run\n"
> 2008.08.28 20:51:13
> <- "Start debugged program.  You may specify arguments to give it.\n"
>    "Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n"
>    "Input and output redirection with \">\", \"<\", or \">>\" are also 
> allowed.\n"
>    "\n"
>    "With no arguments, uses arguments last specified (with \"run\" or \"set 
> args\").\n"
>    "To cancel previous arguments and run with no arguments,\n"
>    "use \"set args\" without arguments.\n"
>    "(gdb) "
> #  Starting GDB...done.
> #  Welcome to DDD 3.3.11 "Rhubarb" (sparc-sun-solaris2.8)
> 2008.08.28 20:51:13
> -> "help step\n"
> 2008.08.28 20:51:13
> <- "Step program until it reaches a different source line.\n"
>    "Argument N means do this N times (or till program stops for another 
> reason).\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help stepi\n"
> 2008.08.28 20:51:13
> <- "Step one instruction exactly.\n"
>    "Argument N means do this N times (or till program stops for another 
> reason).\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help next\n"
> 2008.08.28 20:51:13
> <- "Step program, proceeding through subroutine calls.\n"
>    "Like the \"step\" command as long as subroutine calls do not happen;\n"
>    "when they do, the call is treated as one instruction.\n"
>    "Argument N means do this N times (or till program stops for another 
> reason).\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help nexti\n"
> 2008.08.28 20:51:13
> <- "Step one instruction, but proceed through subroutine calls.\n"
>    "Argument N means do this N times (or till program stops for another 
> reason).\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help until\n"
> 2008.08.28 20:51:13
> <- "Execute until the program reaches a source line greater than the 
> current\n"
>    "or a specified location (same args as break command) within the current 
> frame.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help finish\n"
> 2008.08.28 20:51:13
> <- "Execute until selected stack frame returns.\n"
>    "Upon return, the value returned is printed and put in the value 
> history.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help cont\n"
> 2008.08.28 20:51:13
> <- "Continue program being debugged, after signal or breakpoint.\n"
>    "If proceeding from breakpoint, a number N may be used as an argument,\n"
>    "which means to set the ignore count of that breakpoint to N - 1 (so 
> that\n"
>    "the breakpoint won\'t break until the Nth time it is reached).\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help signal\n"
> 2008.08.28 20:51:13
> <- "Continue program giving it signal specified by the argument.\n"
>    "An argument of \"0\" means continue program without giving it a signal.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help kill\n"
> 2008.08.28 20:51:13
> <- "Kill execution of program being debugged.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help up\n"
> 2008.08.28 20:51:13
> <- "Select and print stack frame that called this one.\n"
>    "An argument says how many frames up to go.\n"
>    "(gdb) "
> 2008.08.28 20:51:13
> -> "help down\n"
> 2008.08.28 20:51:13
> <- "Select and print stack frame called by this one.\n"
>    "An argument says how many frames down to go.\n"
>    "(gdb) "
> 2008.08.28 20:51:16
> -> "set environment TERM dumb\n"
> 2008.08.28 20:51:16
> <- "(gdb) "
> 2008.08.28 20:51:16
> -> "run\n"
> 2008.08.28 20:51:16
> <- "Find factors of what number? "
> 2008.08.28 20:51:18
> -> "12\n"
> 2008.08.28 20:51:18
> <- "Factors of n are: \n"
> 2008.08.28 20:51:22
> <- "2 2 2  2 2 "
> #  Saving options in "/home/sol-00/ehatteme/.ddd/init"...
> #  Saving options in "/home/sol-00/ehatteme/.ddd/init"...done.
> #  Saving history in "/home/sol-00/ehatteme/.ddd/history"...
> #  Saving history in "/home/sol-00/ehatteme/.ddd/history"...done.
> #  Thanks for using DDD 3.3.11!
> 
> _______________________________________________
> bug-ddd mailing list
> bug-ddd@gnu.org
> http://lists.gnu.org/mailman/listinfo/bug-ddd




reply via email to

[Prev in Thread] Current Thread [Next in Thread]