----- Original Message -----
 
 
 ----- Original Message -----
 > crash> p/x *(*(struct trace_page*)0xFFFF8804125CBA60).page | sed
 > 's/^\$[0-9]* =/0xFFFF8804125CBA60 =/' >> trace-data.txt\n
 > gdb: gdb request failed: p/x *(*(struct
 > trace_page*)0xFFFF8804125CBA60).page | sed 's/^\$[0-9]*
 > =/0xFFFF8804125CBA60 =/'
 > crash> p/x *(*(struct trace_page*)0xFFFF8804125CBA60).page
 > $1467 = {
 >    flags = 0x200000000000000,
 >    _count = {
 >      counter = 0x1
 >    },
 >    {
 >      _mapcount = {
 >        counter = 0xffffffff
 >      },
 >      {
 >        inuse = 0xffff,
 >        objects = 0xffff
 >      }
 >    },
 >    {
 >      {
 >        private = 0x0,
 >        mapping = 0x0
 >      },
 >      ptl = {
 >        raw_lock = {
 >          slock = 0x0
 >        }
 >      },
 >      slab = 0x0,
 >      first_page = 0x0
 >    },
 >    {
 >      index = 0x0,
 >      freelist = 0x0,
 >      reserve = 0x0,
 >      frag_count = {
 >        counter = 0x0
 >      }
 >    },
 >    lru = {
 >      next = 0xdead000000100100,
 >      prev = 0xdead000000200200
 >    }
 > }
 
 Bruce,
 
 I'm not sure what you mean about the "open parenthesis", but I think
 this simpler example shows the problem, which is related to using
 a native gdb command in conjunction with a pipe and a redirect.
   
 The "p" command is sort of a "convenience" crash command that pretty
 much exists to be able to quickly change the output radix before passing
 the request to the gdb module.  Using just "p" alone defaults to the
 current output radix (decimal by default):
  
   crash> p jiffies
   jiffies = $12 = 4294754313
   crash>
 
 The output radix can be changed by entering the "hex" alias,
 and then the same command above.  Or alternatively, either
 "p -x" or the "px" alias can be used:
 
   crash> px jiffies
   jiffies = $13 = 0xfffcc009
   crash>
 
 Piping the output works:
 
   crash> px jiffies | cat
   jiffies = $14 = 0xfffcc009
   crash>
 
 Piping the output, and then redirecting it works:
 
   crash> px jiffies | cat > /tmp/junk
   crash> !cat /tmp/junk
   jiffies = $15 = 0xfffcc009
   crash>
 
 But using the gdb "p/x" command directly (bypassing the crash "p"
 command), in conjunction with a pipe and a redirect, generates the
 failure.  Just a pipe or a redirect alone works OK:
 
   crash> p/x jiffies | cat
   $16 = 0xfffcc009
   crash> p/x jiffies > /tmp/junk
   crash> !cat /tmp/junk
   $17 = 0xfffcc009
   crash>
 
 But using a pipe and a redirect strips the redirect, but leaves the "| cat"
 attached to the end of the command line sent to gdb:
 
   crash> p/x jiffies | cat > /tmp/junk
   gdb: gdb request failed: p/x jiffies | cat
   crash>
 
 Interesting that several pipes can be used, with the same bug
 showing up:
 
   crash> p/x jiffies | cat | cat > /tmp/junk
   gdb: gdb request failed: p/x jiffies | cat | cat
   crash>
 
 Not sure why just yet, other than there's a difference in the way
 native gdb commands and crash commands are processed.  Let me dig
 into it... 
Bruce,
The attached patch will address the above issue with native gdb command
handling -- although I suspect it will only be a matter of time before you
come up with another anomaly nobody's bumped into yet...  ;-)
Thanks,
  Dave