Coder Social home page Coder Social logo

haskell / threadscope Goto Github PK

View Code? Open in Web Editor NEW
150.0 11.0 33.0 46.42 MB

A graphical tool for profiling parallel Haskell programs

Home Page: http://www.haskell.org/haskellwiki/ThreadScope

License: Other

Haskell 75.59% Makefile 0.98% HTML 0.27% TeX 22.79% Shell 0.32% C 0.05%

threadscope's Introduction

ThreadScope

Hackage Hackage-Deps CI

Using pre-built binaries

Currently pre-built binaries for the following platforms are provided:

  • Ubuntu 18.04 (64-bit)
  • macOS 10.15
  • Windows Server 2019 (x64)

GTK+2 needs to be installed for these binaries to work.

On Windows, the MSYS2 is the recommended way to install GTK+2. In MSYS2 MINGW64 shell:

pacman -S $MINGW_PACKAGE_PREFIX-gtk2

then you can run the threadscope binary from the shell.

Building from source

Use git clone or cabal get threadscope to get the source and move into the threadscope directory.

Linux

GTK+2 is required to be installed. On Ubuntu-like systems:

sudo apt install libgtk2.0-dev

Then you can build threadscope using cabal:

cabal v2-build   # to only build the project, or
cabal v2-install # to build and install the binary

Or using stack:

stack build   # to only build the project, or
stack install # to build and install the binary

macOS

GTK+ is required:

brew install gtk+

Then you can build threadscope using cabal:

cabal --project-file=cabal.project.osx v2-build   # to only build the project, or
cabal --project-file=cabal.project.osx v2-install # to build and install the binary

Or using stack:

stack --stack-yaml=stack.osx.yaml build   # to only build the project, or
stack --stack-yaml=stack.osx.yaml install # to install the binary

Windows

Chocolatey can be used to install GHC and MSYS2 is the recommended way to install GTK+.

choco install ghc
refreshenv
set PATH=C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;%PATH%
pacman -Sy mingw-w64-x86_64-gtk2

then you can build threadscope using cabal:

cabal v2-build

Or you can use stack instead.

CAVEAT: gtk2 needs to be installed twice: one for stack's MSYS2 environment and another for local MSYS2 environment.

In command prompt:

stack setup
stack exec -- pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime msys2-runtime-devel
stack exec -- pacman -Syu
stack exec -- pacman -Syuu
stack exec -- pacman -S base-devel mingw-w64-x86_64-pkg-config mingw-w64-x86_64-toolchain mingw-w64-x86_64-gtk2
stack install

Then in MSYS2 MINGW64 shell:

pacman -S $MINGW_PACKAGE_PREFIX-gtk2
echo 'export PATH=$APPDATA/local/bin:$PATH' >> .profile
source .profile
threadscope

Building using stack is not tested in CI. If you find any issues with building with stack, please update the instructions and send a PR.

threadscope's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

threadscope's Issues

Redesign the UI using the general visual communication principles

Original reporter: MikolajKonarski

Long term. Gather feedback, look at how easy it is to describe the UI in tutorials, discuss the various ideas from kowey's emails (Nov 20, 2011, Dec 1, 2011) and TODO (all IRC discussions are summarized there), study literature on visual communication (eg. Tufte), look at other libraries and programs. Then reshuffle the panes, draw the graphs differently, etc. to increase usability and make TS easier to learn.

can't install threadscope on ghc 7.10.1, ghc-events fails to compile

can't install threadscope on ghc 7.10.1 because ghc-events fails to compile

ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.1
bash-3.2$ cabal install threadscope
Resolving dependencies...
Configuring ghc-events-0.4.3.0...
Building ghc-events-0.4.3.0...
Failed to install ghc-events-0.4.3.0
Build log ( /Users/gcolpitts/.cabal/logs/ghc-events-0.4.3.0.log ):
Configuring ghc-events-0.4.3.0...
Building ghc-events-0.4.3.0...
Preprocessing library ghc-events-0.4.3.0...
[1 of 8] Compiling GHC.RTS.EventTypes ( GHC/RTS/EventTypes.hs, dist/build/GHC/RTS/EventTypes.o )
[2 of 8] Compiling GHC.RTS.EventParserUtils ( GHC/RTS/EventParserUtils.hs, dist/build/GHC/RTS/EventParserUtils.o )

GHC/RTS/EventParserUtils.hs:128:5:
Non type-variable argument in the constraint: MonadError [Char] m
(Use FlexibleContexts to permit this)
When checking that ‘undeclared_etype’ has the inferred type
undeclared_etype :: forall (m :: * -> *) a a1.
(Show a1, MonadError [Char] m) =>
a1 -> m a
In an equation for ‘mkEventTypeParsers’:
mkEventTypeParsers etypes event_parsers
= accumArray
(flip const)
undefined
(0, max_event_num)
[(num, parser num) | num <- [0 .. max_event_num]]
where
max_event_num = maximum (M.keys etypes)
undeclared_etype num
= throwError ("undeclared event type: " ++ show num)
parser_map = makeParserMap event_parsers
parser num
= let ...
in
case mb_mb_et_size of {
Just mb_et_size -> ...
Nothing -> ... }
cabal: Error: some packages failed to install:
ghc-events-0.4.3.0 failed during the building phase. The exception was:
ExitFailure 1
threadscope-0.2.6 depends on ghc-events-0.4.3.0 which failed to install.

Fails to load event log: "Bad shift length-32"

The following (in an empty directory)

echo "main = return ()" > Main.hs
ghc --make Main.hs -with-rtsopts="-N -ls" -threaded -eventlog -O2
./Main
threadscope Main.eventlog

returns

threadscope: Bad shift length-32

(although the GUI appears briefly before it exits).

Some version numbers that may be relevant:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3
$ threadscope --version
ThreadScope version 0.2.6
$ ghc-pkg list ghc-events
/opt/ghc/7.8.3/lib/ghc-7.8.3/package.conf.d
/home/linuxadmin/.ghc/x86_64-linux-7.8.3/package.conf.d
   ghc-events-0.4.3.0
$ uname -a
Linux vm01 3.13.0-40-generic #69-Ubuntu SMP Thu Nov 13 17:53:56 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

I must be doing something daft here as this must work for other people, surely?! Any help appreciated.

ThreadScope core dumps when linked with threaded runtime

When linked with threaded runtime (cabal install --ghc-options="-threaded" threadscope), ThreadScope can start normally, but core dumps when clicked on the "open" button. The error message is simply "Segmentation fault (core dump)".

The version of threadscope is 0.2.7, compiled by ghc 7.10.2 on 64-bit Linux.

ensure that spark counts in histogram are visible

Original reporter: kowey

When spark counts are printed for each histogram bucket, the black text on blue background can be difficult to read.

Perhaps white text should be used in those cases (keeping black text for when the bars are too small to fit the text in), or the text should systematically be placed above the bars.

Stack Space Overflow

Original reporter: ecrockett3@

I just installed threadscope-0.2.2, and profiled my program (running with -ls -N4). When I load threadscope, it starts loading HECs, but then complains that there was a stack space overflow and crashes.

I manually installed threadscope-0.2.2 with -rtsopts to allow me to change the stack space size. My program ran for ~4.5 minutes on four cores and threadscope required -K1000000000 before it would successfully load the graph. I would attach the .eventlog file, but it is 365mb...

Threadscope allows selection after the end of the trace

Dragging to select a subset of a trace in Threadscope allows an interval that goes beyond the end of the currently loaded trace. For example, if the trace is 30s long, just clicking and dragging across the screen shows "total time: 50s" at the bottom.

ghc-events doesn't compile with ghc 7.10.1RC2

[2 of 8] Compiling GHC.RTS.EventParserUtils ( GHC/RTS/EventParserUtils.hs, dist/build/GHC/RTS/EventParserUtils.o )

GHC/RTS/EventParserUtils.hs:128:5:
Non type-variable argument in the constraint: MonadError [Char] m
(Use FlexibleContexts to permit this)
When checking that ‘undeclared_etype’ has the inferred type
undeclared_etype :: forall (m :: * -> *) a a1.
(Show a1, MonadError [Char] m) =>
a1 -> m a
In an equation for ‘mkEventTypeParsers’:
mkEventTypeParsers etypes event_parsers
= accumArray
(flip const)
undefined
(0, max_event_num)
[(num, parser num) | num <- [0 .. max_event_num]]
where
max_event_num = maximum (M.keys etypes)
undeclared_etype num
= throwError ("undeclared event type: " ++ show num)
parser_map = makeParserMap event_parsers
parser num
= let ...
in
case mb_mb_et_size of {
Just mb_et_size -> ...
Nothing -> ... }

Threadscope fails to read partially written file

Original reporter: manpacket@

If ghc compiled program was launched with option to write eventlog and then was interrupted by Ctrl-C then eventlog file will be partially written.

Actual behaviour: Threadscope fails to read such file complaining "There was a problem loading the eventlog", "too few bytes. Failed reading at byte position 4194995"

Expecting behaviour: threadscope displays an info box saying that file was damaged and only first XXXX bytes (YYY seconds) was recovered then it should work as if this file was finalized properly.

Exit with `scanEvents: GlobalSyncGC ModeGHC` on load

Apologies for the long test case: I haven't found an easy way to make this smaller without the problem going away. It's part of a Project Euler answer.

module Main (main) where

import Data.Numbers.Primes
import Control.Parallel.Strategies

main :: IO ()
main = print $ answerFor 100000

answerFor :: Integer -> Integer
answerFor n = parSum 10000 [ countPrimitiveTrianglesWithPerimeter p | p <- [1..n] ]

countPrimitiveTrianglesWithPerimeter :: Integer -> Integer
countPrimitiveTrianglesWithPerimeter p = sum
  [ trianglesWithPerimeter (div p $ product qs) * (if odd (length qs) then -1 else 1)
  | qs <- subsets $ distinctPrimeFactors p
  ]

trianglesWithPerimeter :: Integer -> Integer
trianglesWithPerimeter p = let p3 = div p 3 in div (p3 * (p3 + 1)) 2

distinctPrimeFactors :: Integer -> [Integer]
distinctPrimeFactors = go primes
  where
  go _ 1 = []
  go [] n = [n]
  go (p:ps) n = if mod n p == 0 then p : go ps (divideOut p $ div n p) else if n < p * p then [n] else go ps n

  divideOut p n = if mod n p == 0 then divideOut p (div n p) else n

subsets :: [a] -> [[a]]
subsets [] = [[]]
subsets (x:xs) = let xss = subsets xs in xss ++ map (x:) xss

parSum :: Num a => Int -> [a] -> a
parSum chunkSize ns = sum (ns `using` parListChunk chunkSize rseq)

And here is what happens when run (on a 4-core VirtualBox VM, GHC 7.8.3, other system info as per #45)

$ ghc --make -rtsopts -threaded -eventlog Main.hs  -Wall -O2
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main ...
$ ./Main +RTS -ls -N
15406050286750
$ threadscope Main.eventlog
threadscope: scanEvents: GlobalSyncGC ModeGHC

The threadscope GUI starts up and starts to load the eventlog, then exits with the message shown. ghc-events doesn't seem to have any problems. Any ideas?

Improve usability, especially the UI, based on use cases

Original reporter: MikolajKonarski

This ticket is not about UI improved using the universal principles of visual communication, but about improvements based on down-to-earth analysis or imagining of use cases, user stories, (imagined) experiences with alternative UI mock-ups. etc. In other words, this is the broader question, with research, modelling => personas + scenarios => framework => detailed design.

histogram drawing loops in poll.c

Original reporter: MikolajKonarski

Always reproducible on my machine. Could somebody try on theirs? Caused probably by the patch "Put the vertical ruler in the middle of histogram, if only the number of bars even"

Instructions: open the eventlog from https://github.com/Mikolaj/threadscope-sparkgraph-demo/blob/master/parlist.eventlog
Now select the histogram tab ("Sparks"). CPU usage goes up to 100% and the window freezes. Gdb backtrace after ^C:

Program received signal SIGINT, Interrupt.
0x00007ffff414bf03 in __poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=<value optimised out>) at ../sysdeps/unix/sysv/linux/poll.c:87
87  ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
    in ../sysdeps/unix/sysv/linux/poll.c
(gdb) bt full
#0  0x00007ffff414bf03 in __poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=<value optimised out>) at ../sysdeps/unix/sysv/linux/poll.c:87
        resultvar = 18446744073709551100
        oldtype = 0
        result = <value optimised out>
#1  0x00007ffff19c0512 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#2  0x00007ffff19c0a5f in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#3  0x00007ffff19c0ae4 in xcb_writev () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#4  0x00007ffff3d792a7 in _XSend () from /usr/lib/x86_64-linux-gnu/libX11.so.6
No symbol table info available.
#5  0x00007ffff3d79665 in _XFlush () from /usr/lib/x86_64-linux-gnu/libX11.so.6
No symbol table info available.
#6  0x00007ffff3316540 in XRenderCompositeTrapezoids () from /usr/lib/x86_64-linux-gnu/libXrender.so.1
No symbol table info available.
#7  0x00007ffff646265f in _cairo_xlib_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0x7fffffff5230, abstract_dst=<value optimised out>, antialias=<value optimised out>, 
    src_x=112, src_y=388, dst_x=112, dst_y=388, width=15, height=111, traps=0x7fffffff4c48, num_traps=1, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-xlib-surface.c:2979
        attributes # {matrix{xx # 1, yx0, xy # 0, yy1, x0 # 0, y00}, extend # CAIRO_EXTEND_REPEAT, filterCAIRO_FILTER_NEAREST, has_component_alpha # 0, x_offset0, 
          y_offset # 0, extra0x7ffff4416c60}
        dst = <value optimised out>
        src = 0x11038f0
        display = 0x1059680
        status = 0
        operation = <value optimised out>
        render_reference_x = <value optimised out>
        render_reference_y = <value optimised out>
        pict_format = 0xe6a6d0
        xtraps_stack # {{top26279936, bottom # 31719424, left{p1 # {x7340032, y # 25427968}, p2{x # 7340032, y32702464}}, right # {p1{x # 7372800, y26279936}, p2 = {
                x # 7372800, y31719424```, {top # 0, bottom0, left # {p1{x # 244, y1081692160}, p2 # {x19, y # 2}}, right{p1 # {x-51152, y # 32767}, p2{x = -44448, 
                y # 32767}}}, {top244, bottom # 483, left{p1 # {x-51152, y # 32767}, p2{x # 15115984, y0}}, right # {p1{x # 17671040, y0}, p2 # {x31718912, 
                y # 31719424}}}, {top16028160, bottom # 31718912, left{p1 # {x16028160, y # 31719424}, p2{x # 19553024, y31718912}}, right # {p1{x = 19553024, 
                y # 31719424}, p2{x # -51304, y32767}}}, {top # 2922, bottom0, left # {p1{x # -38272, y32767}, p2 # {x-49808, y # 32767}}, right{p1 # {x-163536850, 
                y # 32767}, p2{x # -38272, y32767}}}, {top # 0, bottom0, left # {p1{x # 0, y0}, p2 # {x-163533917, y # 32767}}, right{p1 # {x252928, y = 32767}, 
              p2 # {x2486, y # 0}}}, {top-48704, bottom # 32767, left{p1 # {x128, y # 32767}, p2{x # -36608, y32767}}, right # {p1{x # 1, y0}, p2 # {x0, 
                y # 0}}}, {top-48632, bottom # 32767, left{p1 # {x-50944, y # 32767}, p2{x # -47632, y32767}}, right # {p1{x # -50944, y32767}, p2 # {x0, y = 0}}}, {
            top # 2, bottom253477, left # {p1{x # 1573, y32767}, p2 # {x253477, y # 1573}}, right{p1 # {x252965, y # 2085}, p2{x # 1573, y2085}}}, {top = 1, 
            bottom # 32767, left{p1 # {x-50208, y # 32767}, p2{x # -50288, y32767}}, right # {p1{x # 0, y0}, p2 # {x1755, y # 32767}}}, {top2, bottom = 253659, 
            left # {p1{x # 1755, y32767}, p2 # {x253659, y # 1755}}, right{p1 # {x253147, y # 2267}, p2{x # 1755, y2267}}}, {top # -1, bottom32767, left # {p1{
                x # -49808, y32767}, p2 # {x0, y # 0}}, right{p1 # {x0, y # 0}, p2{x # -1, y32767}}}, {top # 2, bottom252965, left # {p1{x # 1243, y0}, p2 = {
                x # 252965, y1243}}, right # {p1{x # 253477, y1755}, p2 # {x1243, y # 1755}}}, {top1, bottom # 0, left{p1 # {x-50928, y # 32767}, p2{x = -50448, 
                y # 32767}}, right{p1 # {x0, y # 0}, p2{x # 1573, y0}}}, {top # 2, bottom253147, left # {p1{x # 1061, y0}, p2 # {x253147, y # 1061}}, right{p1 = {
                x # 253659, y1573}, p2 # {x1061, y # 1573}}}, {top-1, bottom # 32767, left{p1 # {x-50528, y # 32767}, p2{x # 0, y0}}, right # {p1{x # 0, y0}, 
              p2 # {x1, y # 32767}}}, {top2, bottom # 253568, left{p1 # {x1664, y # 0}, p2{x # 253568, y1664}}, right # {p1{x # 253477, y1755}, p2 # {x1664, 
                y # 1755}}}, {top-1, bottom # 0, left{p1 # {x-50768, y # 32767}, p2{x # -50448, y32767}}, right # {p1{x # 0, y0}, p2 # {x18258592, y = 0}}}, {
            top # 2, bottom253477, left # {p1{x # 1573, y32767}, p2 # {x253477, y # 1573}}, right{p1 # {x253568, y # 1664}, p2{x # 1573, y1664}}}, {top = -1, 
            bottom # 32767, left{p1 # {x-50768, y # 32767}, p2{x # -50368, y32767}}, right # {p1{x # 0, y0}, p2 # {x-50312, y # 32767}}}, {top2, bottom = 253750, 
            left # {p1{x # 1664, y0}, p2 # {x253750, y # 1664}}, right{p1 # {x253659, y # 1755}, p2{x # 1664, y1755}}}, {top # -1, bottom0, left # {p1{
                x # -50928, y32767}, p2 # {x0, y # 0}}, right{p1 # {x0, y # 0}, p2{x # 1573, y0}}}, {top # 2, bottom253659, left # {p1{x # 1573, y32767}, p2 = {
                x # 253659, y1573}}, right # {p1{x # 253750, y1664}, p2 # {x1573, y # 1664}}}, {top-1, bottom # 32767, left{p1 # {x-50608, y # 32767}, p2{x = 0, 
---Type <return> to continue, or q <return> to quit---
                y # 0}}, right{p1 # {x0, y # 0}, p2{x # 1664, y32767}}}, {top # 2, bottom253184, left # {p1{x # 1152, y0}, p2 # {x253184, y # 1152}}, right{p1 = {
                x # 253184, y2176}, p2 # {x1152, y # 2176}}}, {top-1, bottom # 32767, left{p1 # {x-49808, y # 32767}, p2{x # -50848, y32767}}, right # {p1{x = 0, 
                y # 0}, p2{x # -153613315, y32767}}}, {top # 17674808, bottom0, left # {p1{x # 15827824, y0}, p2 # {x2, y # 0}}, right{p1 # {x-153612593, 
                y # 32767}, p2{x # 0, y0}}}, {top # 0, bottom32767, left # {p1{x # 17675068, y0}, p2 # {x-153613534, y # 32767}}, right{p1 # {x-49584, y = 32767}, 
              p2 # {x-153591534, y # 32767}}}, {top0, bottom # 0, left{p1 # {x0, y # 32767}, p2{x # 253056, y1152}}, right # {p1{x # -153613534, y32767}, p2 = {
                x # -49536, y32767}}}, {top # 15956448, bottom0, left # {p1{x # -50208, y3}, p2 # {x-468257996, y # 32767}}, right{p1 # {x0, y # 3}, p2{
                x # -468258046, y32767}}}, {top # 0, bottom252928, left # {p1{x # 15956448, y3}, p2 # {x6, y # 0}}, right{p1 # {x1, y # 32767}, p2{x = -468258680, 
                y # 32767}}}, {top-468258044, bottom # 32767, left{p1 # {x-153613600, y # 32767}, p2{x # 0, y1}}, right # {p1{x # -468258002, y32767}, p2 = {
                x # -468258680, y32767}}}, {top # -468255488, bottom32767, left # {p1{x # 10, y0}, p2 # {x30935552, y # 3}}, right{p1 # {x1114112, y # 8}, p2{x = 1, 
                y # 1}}}, {top-468258046, bottom # 32767, left{p1 # {x-49584, y # 32767}, p2{x # 15956448, y0}}, right # {p1{x # 1114112, y0}, p2 # {x8, y = 0}}}, {
            top # 0, bottom0, left # {p1{x # -153590571, y32767}, p2 # {x2, y # 32767}}, right{p1 # {x-49840, y # 32767}, p2{x # -51640, y32767}}}, {top = -51728, 
            bottom # 32767, left{p1 # {x-51904, y # 32767}, p2{x # -51816, y32767}}, right # {p1{x # 0, y0}, p2 # {x-153595787, y # 32767}}}, {top-468270512, 
            bottom # 32767, left{p1 # {x-49648, y # 32767}, p2{x # 1, y0}}, right # {p1{x # -153566739, y32767}, p2 # {x206993163, y # 0}}}, {top12, bottom = 458, 
            left # {p1{x # 0, y1081909248}, p2 # {x119, y # 0}}, right{p1 # {x0, y # 0}, p2{x # 0, y1081909248}}}, {top # 86, bottom0, left # {p1{x # 0, y0}, 
              p2 # {x0, y # 1081909248}}, right{p1 # {x12, y # 0}, p2{x # 0, y0}}}, {top # 0, bottom1081909248, left # {p1{x # 86, y0}, p2 # {x0, y = 0}}, 
            right # {p1{x # 0, y1081856000}, p2 # {x2, y # 0}}}, {top17671040, bottom # 0, left{p1 # {x8, y # 0}, p2{x # 17671040, y0}}, right # {p1{x = 100, 
                y # 0}, p2{x # -44816, y32767}}}, {top # -163287899, bottom32767, left # {p1{x # -46048, y32767}, p2 # {x-44496, y # 32767}}, right{p1 # {x-44352, 
                y # 32767}, p2{x # 5, y0}}}, {top # -44736, bottom32767, left # {p1{x # -163300235, y32767}, p2 # {x5, y # 0}}, right{p1 # {x17671040, y # 0}, p2{
                x # -49504, y32767}}}, {top # -49504, bottom32767, left # {p1{x # 100, y0}, p2 # {x-163287485, y # 32767}}, right{p1 # {x-45968, y # 32767}, p2{
                x # -163287899, y32767}}}, {top # -45952, bottom32767, left # {p1{x # 14420608, y0}, p2 # {x-49456, y # 32767}}, right{p1 # {x10945182, y # 0}, p2{
                x # 0, y0}}}, {top # 0, bottom1, left # {p1{x # -49424, y32767}, p2 # {x11010214, y # 0}}, right{p1 # {x-49224, y # 32767}, p2{x = -163342823, 
                y # 26}}}, {top388, bottom # 0, left{p1 # {x-197039008, y # 32767}, p2{x # 0, y0}}, right # {p1{x # 0, y0}, p2 # {x0, y # 0}}}, {top2, 
            bottom # 0, left{p1 # {x0, y # 0}, p2{x # 112, y0}}, right # {p1{x # 388, y0}, p2 # {x0, y # 0}}}, {top1, bottom # 0, left{p1 # {x112, y = 0}, 
              p2 # {x2, y # 0}}, right{p1 # {x0, y # 0}, p2{x # -44496, y32767}}}, {top # 2, bottom0, left # {p1{x # -44496, y32767}, p2 # {x388, y = 0}}, 
            right # {p1{x # 17671040, y0}, p2 # {x111, y # 0}}}, {top17671304, bottom # 0, left{p1 # {x0, y # 0}, p2{x # -48272, y32767}}, right # {p1{
                x # -163296721, y32767}, p2 # {x582, y = 0}}}}
        xtraps = 0x7fffffff37c0
        i = <value optimised out>
#8  0x00007ffff6444a99 in _cairo_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0x7fffffff5230, dst=0x10da380, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=112, src_y=388, 
    dst_x=112, dst_y=388, width=15, height=111, traps=0x7fffffff4c48, num_traps=1, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface.c:2309
        status = <value optimised out>
        __PRETTY_FUNCTION__.10657 = "_cairo_surface_composite_trapezoids"
#9  0x00007ffff64475e0 in _composite_traps_draw_func (closure=0x7fffffff4780, op=CAIRO_OPERATOR_OVER, src=<value optimised out>, dst=<value optimised out>, dst_x=0, 
    dst_y=<value optimised out>, extents=0x7fffffff50f0, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:561
        info = 0x7fffffff4780
        status = <value optimised out>
        extents_region = 0x0
#10 0x00007ffff6446703 in _clip_and_composite (clip=0x0, op=<value optimised out>, src=<value optimised out>, draw_func=0x7ffff6447530 <_composite_traps_draw_func>, 
    draw_closure=0x7fffffff4780, dst=0x10da380, extents=0x7fffffff50f0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:472
        clip_surface = <value optimised out>
        clip_region = 0x0
        status = <value optimised out>
#11 0x00007ffff64471da in _clip_and_composite_trapezoids (src=0x7fffffff5230, op=CAIRO_OPERATOR_OVER, dst=0x10da380, traps=0x7fffffff4c20, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0, 
    extents=0x7fffffff50f0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:875
        traps_info # {traps0x7fffffff4c20, antialias = CAIRO_ANTIALIAS_DEFAULT}
        clip_region = 0x0
        clip_surface = <value optimised out>
        status = <value optimised out>
#12 0x00007ffff6447cd3 in _cairo_surface_fallback_stroke (surface=0x10da380, op=CAIRO_OPERATOR_OVER, source=0x7fffffff5230, path=<value optimised out>, stroke_style=0x7fffffff5330, 
    ctm=0x110e640, ctm_inverse=0x110e670, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:1113
---Type <return> to continue, or q <return> to quit---
        polygon # {statusCAIRO_STATUS_SUCCESS, first_point # {x32767, y # 2}, last_point{x # 0, y17671040}, current_point # {x0, y # -44448}, current_edge{dx = 32767, 
            dy # 0}, has_current_point0, has_current_edge # 0, extents{p1 # {x2147483647, y # 2147483647}, p2{x # -2147483648, y-2147483648}}, limit # {p1{x = 28672, 
              y # 99328}, p2{x # 32512, y127744}}, limits # 0x7fffffff4ed0, num_limits1, num_edges # 0, edges_size32, edges # 0x7fffffff48a0, edges_embedded{{line # {p1{
                  x # 25280, y0}, p2 # {x0, y # 2147483647}}, top2147483647, bottom # 0, dir0}, {line # {p1{x # 2147483647, y2147483647}, p2 # {x-2147483648, 
                  y # -2147483648}}, top62464, bottom # 123648, dir76544}, {line # {p1{x # 123904, y0}, p2 # {x-45264, y # 32767}}, top1, bottom # 0, dir32}, {line = {
                p1 # {x28672, y # -46848}, p2{x # 32767, y104704}}, top # 102656, bottom102720, dir # -1}, {line{p1 # {x25472, y # 123904}, p2{x # 25408, y124015}}, 
              top # 123904, bottom124015, dir # -1}, {line{p1 # {x25216, y # 123904}, p2{x # 25280, y124015}}, top # 123904, bottom124015, dir # 1}, {line{p1 = {
                  x # -2048, y1119354879}, p2 # {x-46720, y # 32767}}, top0, bottom # 1076101120, dir17574400}, {line # {p1{x # 0, y0}, p2 # {x0, y # 0}}, top0, 
              bottom # 0, dir0}, {line # {p1{x # 11, y0}, p2 # {x0, y # 1076101120}}, top0, bottom # 1079083008, dir119}, {line # {p1{x # 0, y0}, p2 = {
                  x # 1076625408, y0}}, top # 1079083008, bottom86, dir # 0}, {line{p1 # {x0, y # 1077215232}, p2{x # 0, y1079083008}}, top # 12, bottom0, dir = 0}, {
              line # {p1{x # 1077608448, y0}, p2 # {x1079083008, y # 86}}, top0, bottom # 0, dir1078001664}, {line # {p1{x # 0, y1078755328}, p2 # {x3, y = 0}}, 
              top # 0, bottom1078198272, dir # 0}, {line{p1 # {x1078329344, y # 3}, p2{x # 0, y0}}, top # 1078460416, bottom0, dir # 1077870592}, {line{p1 = {
                  x # -173405051, y0}, p2 # {x16559968, y # 0}}, top-46192, bottom # 32767, dir41}, {line # {p1{x # 0, y-46312}, p2 # {x32767, y = -46320}}, 
              top # 32767, bottom-179840072, dir # 32767}, {line{p1 # {x41, y # 0}, p2{x # -165903510, y32767}}, top # 17560208, bottom0, dir # 1}, {line{p1 = {
                  x # 1072693248, y15574376}, p2 # {x0, y # 0}}, top25, bottom # 15574376, dir0}, {line # {p1{x # 41, y0}, p2 # {x16646176, y # 0}}, top15919776, 
              bottom # 0, dir17436976}, {line # {p1{x # 0, y0}, p2 # {x0, y # 0}}, top0, bottom # -46192, dir32767}, {line # {p1{x # 17442183, y0}, p2 = {
                  x # -182509405, y32767}}, top # 0, bottom0, dir # -46192}, {line{p1 # {x32767, y # 0}, p2{x # 0, y15813792}}, top # 0, bottom0, dir # 0}, {line{
                p1 # {x-182740034, y # 32767}, p2{x # 0, y0}}, top # -173405418, bottom32767, dir # -46192}, {line{p1 # {x32767, y # 0}, p2{x # 0, y16572688}}, 
              top # 0, bottom0, dir # 0}, {line{p1 # {x20, y # 0}, p2{x # 0, y1080095296}}, top # 0, bottom1079246720, dir # 21}, {line{p1 # {x0, y # 0}, p2{
                  x # 1076625408, y0}}, top # 1079244608, bottom19, dir # 0}, {line{p1 # {x0, y # 1078820864}, p2{x # 0, y1076953088}}, top # 19, bottom0, dir = 0}, {
              line # {p1{x # 1079033856, y0}, p2 # {x1076953088, y # 19}}, top0, bottom # 0, dir1079164928}, {line # {p1{x # 0, y1076953088}, p2 # {x19, y = 0}}, 
              top # 0, bottom1079296000, dir # 0}, {line{p1 # {x1076953088, y # 4}, p2{x # 0, y17738752}}, top # 0, bottom17792664, dir # 0}, {line{p1 # {x17739280, 
                  y # 0}, p2{x # -45808, y32767}}, top # -163449902, bottom32767, dir # 17738752}, {line{p1 # {x0, y # 1}, p2{x # 0, y-45912}}, top = 32767, 
              bottom # -163320700, dir32767}}}
        traps # {statusCAIRO_STATUS_SUCCESS, limits # 0x7fffffff4ed0, num_limits1, maybe_region # 0, has_intersections0, is_rectilinear # 1, is_rectangular1, num_traps = 1, 
          traps_size # 16, traps0x7fffffff4c48, traps_embedded # {{top102656, bottom # 123904, left{p1 # {x28672, y # 99328}, p2{x # 28672, y127744}}, right # {p1{
                  x # 28800, y102656}, p2 # {x28800, y # 123904}}}, {top124030, bottom # 124032, left{p1 # {x76251, y # 124030}, p2{x # 76251, y124032}}, right = {
                p1 # {x76507, y # 124030}, p2{x # 76507, y124032}}}, {top # 123774, bottom124030, left # {p1{x # 62738, y123774}, p2 # {x14420608, y # 0}}, right{
                p1 # {x-45872, y # 32767}, p2{x # 10945182, y0}}}, {top # 123774, bottom123776, left # {p1{x # 62482, y1}, p2 # {x-45840, y # 32767}}, right{p1 = {
                  x # 11010214, y0}, p2 # {x62738, y # 123776}}}, {top14420608, bottom # 0, left{p1 # {x-45808, y # 32767}, p2{x # 10945182, y0}}, right # {p1{
                  x # 0, y0}, p2 # {x0, y # 1}}}, {top-45776, bottom # 32767, left{p1 # {x11010214, y # 0}, p2{x # 0, y0}}, right # {p1{x # -44240, y26}, p2 = {
                  x # -44496, y32767}}}, {top # -197039008, bottom32767, left # {p1{x # 0, y0}, p2 # {x0, y # 0}}, right{p1 # {x0, y # 0}, p2{x # 2, y0}}}, {
              top # 0, bottom0, left # {p1{x # 0, y644218880}, p2 # {x0, y # 0}}, right{p1 # {x0, y # 0}, p2{x # -571364311, y32767}}}, {top # 17884688, bottom0, 
              left # {p1{x # 17884832, y0}, p2 # {x-571364311, y # 32767}}, right{p1 # {x-526593856, y # 32767}, p2{x # -44480, y32767}}}, {top # 16236376, bottom0, 
              left # {p1{x # -44496, y32767}, p2 # {x16236224, y # 0}}, right{p1 # {x0, y # 0}, p2{x # -44496, y32767}}}, {top # 858993459, bottom1069757235, 
              left # {p1{x # -44632, y32767}, p2 # {x-163539776, y # 32767}}, right{p1 # {x582, y # 0}, p2{x # 51, y0}}}, {top # 0, bottom0, left # {p1{x = 1, 
                  y # 0}, p2{x # 0, y0}}, right # {p1{x # 0, y0}, p2 # {x-45312, y # 32767}}}, {top14420608, bottom # 0, left{p1 # {x-45488, y # 32767}, p2{
                  x # 10945182, y0}}, right # {p1{x # 0, y0}, p2 # {x1, y # 1}}}, {top-45456, bottom # 32767, left{p1 # {x11010214, y # 0}, p2{x = -45248, 
                  y # 32767}}, right{p1 # {x0, y # 0}, p2{x # -44304, y32767}}}, {top # -197039008, bottom32767, left # {p1{x # 0, y0}, p2 # {x0, y # 0}}, right{
                p1 # {x0, y # 0}, p2{x # 2, y0}}}, {top # 0, bottom0, left # {p1{x # 0, y0}, p2 # {x2, y # 0}}, right{p1 # {x0, y # 1359872}, p2{
                  x # -526561648, y32767}}}}}
        boxes_stack # {{p1{x # 28672, y99328}, p2 # {x32512, y # 127744}}, {p1{x # -526593856, y32767}, p2 # {x14420608, y # 0}}, {p1{x # -45296, y32767}, p2 = {
              x # 10945182, y0}}, {p1 # {x2098047, y # 85917696}, p2{x # -160553161, y32767}}, {p1 # {x-32024, y # 32767}, p2{x # 8102, y65535}}, {p1 # {x5701719, 
              y # 5898327}, p2{x # 14420608, y0}}, {p1 # {x-45232, y # 32767}, p2{x # 10945182, y0}}, {p1 # {x16843009, y # 16843009}, p2{x # 65535, y1}}, {p1 = {
              x # -45200, y32767}, p2 # {x11010214, y # 0}}, {p1{x # 0, y0}, p2 # {x65535, y # 26}}, {p1{x # -526561560, y32767}, p2 # {x-197039008, y = 32767}}, {
            p1 # {x0, y # 0}, p2{x # 0, y0}}, {p1 # {x0, y # 0}, p2{x # 2, y0}}, {p1 # {x0, y # 0}, p2{x # -526561576, y32767}}, {p1 # {x0, y # 0}, p2{
              x # -526561576, y32767}}, {p1 # {x-526561648, y # 32767}, p2{x # -256855536, y32767}}, {p1 # {x14420632, y # 0}, p2{x # -256855552, y32767}}, {p1 = {
              x # -526593856, y32767}, p2 # {x-526561576, y # 32767}}, {p1{x # 0, y0}, p2 # {x-526561560, y # 32767}}, {p1{x # 0, y0}, p2 # {x0, y # 0}}, {p1{
              x # -256900416, y32767}, p2 # {x-526561576, y # 32767}}, {p1{x # -44080, y32767}, p2 # {x10936388, y # 0}}, {p1{x # 518, y0}, p2 # {x51, y = 0}}, {
            p1 # {x0, y # 0}, p2{x # 1, y0}}, {p1 # {x0, y # 0}, p2{x # 0, y0}}, {p1 # {x-44736, y # 32767}, p2{x # 0, y0}}, {p1 # {x0, y # 0}, p2{x = 0, 
---Type <return> to continue, or q <return> to quit---
              y # 0}}, {p1{x # -129810414, y-1134233975}, p2 # {x0, y # 0}}, {p1{x # 1060874752, y1073783474}, p2 # {x0, y # 0}}, {p1{x # 0, y0}, p2 # {x0, 
              y # 0}}, {p1{x # 0, y0}, p2 # {x65535, y # 0}}, {p1{x # 0, y-1926234112}, p2 # {x16329, y = 0}}}
        clip_boxes = 0x7fffffff4ed0
        num_boxes = 1
        extents # {source{x # -8388608, y-8388608, width # 16777215, height16777215}, mask # {x97, y # 386, width30, height # 113}, bounded{x # 112, y388, width = 15, 
            height # 111}, unbounded{x # 112, y388, width # 898, height126}, is_bounded = 6}
        rect # {x0, y # 0, width1012, height = 537}
        status = <value optimised out>
        __PRETTY_FUNCTION__.10363 = "_cairo_surface_fallback_stroke"
#13 0x00007ffff6444511 in _cairo_surface_stroke (surface=0x10da380, op=CAIRO_OPERATOR_OVER, source=0x7fffffff5230, path=0x7ffff66b8c08, stroke_style=0x7fffffff5330, ctm=0x110e640, 
    ctm_inverse=0x110e670, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x7fffffff5360) at /build/buildd/cairo-1.10.2/src/cairo-surface.c:2215
        status = <value optimised out>
#14 0x00007ffff641dad1 in _cairo_gstate_stroke (gstate=0x110e550, path=0x7ffff66b8c08) at /build/buildd/cairo-1.10.2/src/cairo-gstate.c:1166
        source_pattern # {typeCAIRO_PATTERN_TYPE_SOLID, base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status # CAIRO_STATUS_SUCCESS, user_data{size = 0, 
              num_elements # 0, element_size24, elements # 0x0, is_snapshot0}, matrix # {xx1, yx # 0, xy0, yy # 1, x0-112, y0 # -401}, filterCAIRO_FILTER_GOOD, 
            extend # CAIRO_EXTEND_PAD, has_component_alpha0}, solid # {base{type # CAIRO_PATTERN_TYPE_SOLID, ref_count{ref_count # 0}, statusCAIRO_STATUS_SUCCESS, user_data = {
                size # 0, num_elements0, element_size # 24, elements0x0, is_snapshot # 0}, matrix{xx # 1, yx0, xy # 0, yy1, x0 # -112, y0-401}, 
              filter # CAIRO_FILTER_GOOD, extendCAIRO_EXTEND_PAD, has_component_alpha # 0}, color{red # 0, green0, blue # 0, alpha0.14999999999999999, red_short = 0, 
              green_short # 0, blue_short0, alpha_short # 9830}}, surface{base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status = CAIRO_STATUS_SUCCESS, 
              user_data # {size0, num_elements # 0, element_size24, elements # 0x0, is_snapshot0}, matrix # {xx1, yx # 0, xy0, yy # 1, x0-112, y0 = -401}, 
              filter # CAIRO_FILTER_GOOD, extendCAIRO_EXTEND_PAD, has_component_alpha # 0}, surface0x0}, gradient # {base{base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count = {
                  ref_count # 0}, statusCAIRO_STATUS_SUCCESS, user_data # {size0, num_elements # 0, element_size24, elements # 0x0, is_snapshot0}, matrix # {xx1, yx = 0, 
                  xy # 0, yy1, x0 # -112, y0-401}, filter # CAIRO_FILTER_GOOD, extendCAIRO_EXTEND_PAD, has_component_alpha # 0}, n_stops0, stops_size # 0, stops0x0, 
              stops_embedded # {{offset0, color # {red0.14999999999999999, green # 1.0400027115073853e-123, blue7.1247270049434466e-317, alpha = 6.9533558056476769e-310, 
                    red_short # 20448, green_short57501, blue_short # 32767, alpha_short0}}, {offset # 5.484855933468515e-317, color{red = 7.1247270049434466e-317, 
                    green # 6.9533558056524199e-310, blue5.4344780358246664e-317, alpha # 6.9533293174927656e-310, red_short2688, green_short # 220, blue_short0, 
                    alpha_short # 0}}}}, linear{base # {base{type # CAIRO_PATTERN_TYPE_SOLID, ref_count{ref_count # 0}, statusCAIRO_STATUS_SUCCESS, user_data # {size0, 
                    num_elements # 0, element_size24, elements # 0x0, is_snapshot0}, matrix # {xx1, yx # 0, xy0, yy # 1, x0-112, y0 # -401}, filterCAIRO_FILTER_GOOD, 
                  extend # CAIRO_EXTEND_PAD, has_component_alpha0}, n_stops # 0, stops_size0, stops # 0x0, stops_embedded{{offset # 0, color{red = 0.14999999999999999, 
                      green # 1.0400027115073853e-123, blue7.1247270049434466e-317, alpha # 6.9533558056476769e-310, red_short20448, green_short # 57501, blue_short32767, 
                      alpha_short # 0}}, {offset5.484855933468515e-317, color # {red7.1247270049434466e-317, green # 6.9533558056524199e-310, blue5.4344780358246664e-317, 
                      alpha # 6.9533293174927656e-310, red_short2688, green_short # 220, blue_short0, alpha_short # 0}}}}, p1{x # 8, y0}, p2 # {x-526561304, y = 32767}}, 
            radial # {base{base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status # CAIRO_STATUS_SUCCESS, user_data{size # 0, num_elements0, 
                    element_size # 24, elements0x0, is_snapshot # 0}, matrix{xx # 1, yx0, xy # 0, yy1, x0 # -112, y0-401}, filter = CAIRO_FILTER_GOOD, 
                  extend # CAIRO_EXTEND_PAD, has_component_alpha0}, n_stops # 0, stops_size0, stops # 0x0, stops_embedded{{offset # 0, color{red = 0.14999999999999999, 
                      green # 1.0400027115073853e-123, blue7.1247270049434466e-317, alpha # 6.9533558056476769e-310, red_short20448, green_short # 57501, blue_short32767, 
                      alpha_short # 0}}, {offset5.484855933468515e-317, color # {red7.1247270049434466e-317, green # 6.9533558056524199e-310, blue5.4344780358246664e-317, 
                      alpha # 6.9533293174927656e-310, red_short2688, green_short # 220, blue_short0, alpha_short # 0}}}}, c1{x # 8, y0}, r1 # -526561304, c2{x = 32767, 
                y # 11100376}, r20}}}
        style # {line_width1, line_cap # CAIRO_LINE_CAP_BUTT, line_joinCAIRO_LINE_JOIN_MITER, miter_limit # 10, dash0x0, num_dashes # 0, dash_offset0}
        dash = {6.9533558056563725e-310, 5.4269000569487534e-317}
        clip # {path0x10c9560, all_clipped = 0}
        status = <value optimised out>
#15 0x00007ffff6414c00 in *INT_cairo_stroke_preserve (cr=0x7ffff66b88a0) at /build/buildd/cairo-1.10.2/src/cairo.c:2406
        status = 4294966780
#16 0x00007ffff6414c19 in *INT_cairo_stroke (cr=0x7ffff66b88a0) at /build/buildd/cairo-1.10.2/src/cairo.c:2379
No locals.
#17 0x000000000090941e in sntJ_info ()
No symbol table info available.
#18 0x0000000000000001 in ?? ()
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#19 0x00007fffffff53e8 in ?? ()
No symbol table info available.
#20 0x0000000101154590 in ?? ()
No symbol table info available.
#21 0x00007fffffff53f8 in ?? ()
No symbol table info available.
#22 0x00007fffffff5420 in ?? ()
No symbol table info available.
#23 0x00007ffff6428b8f in _cairo_matrix_to_pixman_matrix (matrix=0x7fffe09d4f10, pixman_transform=0x7fffddf1ac29, xc=0, yc=7.1938566701095539e-317)
    at /build/buildd/cairo-1.10.2/src/cairo-matrix.c:921
No locals.
#24 0x00007ffff6461e97 in _cairo_xlib_surface_set_matrix (surface=0x10cc800, attributes=0x7fffffff60d0, xc=<value optimised out>, yc=<value optimised out>, display=<value optimised out>)
    at /build/buildd/cairo-1.10.2/src/cairo-xlib-surface.c:1634
        xtransform # {matrix{{65536, 0, 14871440}, {0, 3, 0}, {988, 0, 9}}}
#25 _cairo_xlib_surface_set_attributes (surface=0x10cc800, attributes=0x7fffffff60d0, xc=<value optimised out>, yc=<value optimised out>, display=<value optimised out>)
    at /build/buildd/cairo-1.10.2/src/cairo-xlib-surface.c:1772
        status = 3723602985
        pa # {repeat15115984, alpha_map # 15008080, alpha_x_origin4194303, alpha_y_origin # 0, clip_x_origin88084003, clip_y_origin # 0, clip_mask985162418446720, 
          graphics_exposures # 88083993, subwindow_mode50332636, poly_edge # 0, poly_mode0, dither # 18362925961851170304, component_alpha-36720}
        mask = 0
#26 0x00007ffff6462797 in _cairo_xlib_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0x7fffffff7090, abstract_dst=<value optimised out>, antialias=<value optimised out>, 
    src_x=988, src_y=3, dst_x=988, dst_y=3, width=4294936848, height=4131441193, traps=0x218000003f400, num_traps=259072, clip_region=0x218000003e500)
    at /build/buildd/cairo-1.10.2/src/cairo-xlib-surface.c:3019
        attributes # {matrix{xx # 1, yx0, xy # 0, yy1, x0 # 0, y00}, extend # CAIRO_EXTEND_REPEAT, filterCAIRO_FILTER_NEAREST, has_component_alpha # 0, x_offset0, 
          y_offset # 0, extra0x7ffff66b8c30}
        dst = <value optimised out>
        src = 0x10cc800
        display = 0x1059680
        status = 9
        operation = <value optimised out>
        render_reference_x = <value optimised out>
        render_reference_y = <value optimised out>
        pict_format = <value optimised out>
        xtraps_stack # {{top215552, bottom # 271616, left{p1 # {x64749568, y # 215552}, p2{x # 64749568, y294912}}, right # {p1{x # 64749568, y215552}, p2 = {
                x # 64805632, y271616}}}, {top # 271616, bottom374272, left # {p1{x # 64749568, y294912}, p2 # {x64749568, y # 557056}}, right{p1 # {x64805632, 
                y # 271616}, p2{x # 64936704, y402688}}}, {top # 374272, bottom402688, left # {p1{x # 64759040, y318208}, p2 # {x64890112, y # 449280}}, right{p1 = {
                x # 64805632, y271616}, p2 # {x64936704, y # 402688}}}, {top402688, bottom # 425984, left{p1 # {x64759040, y # 318208}, p2{x # 64890112, y449280}}, 
            right # {p1{x # 64936704, y402688}, p2 # {x64960000, y # 425984}}}, {top425984, bottom # 449280, left{p1 # {x64890112, y # 402688}, p2{x = 64759040, 
                y # 533760}}, right{p1 # {x64960000, y # 425984}, p2{x # 64936704, y449280}}}, {top # 449280, bottom477696, left # {p1{x # 64890112, y402688}, p2 = {
                x # 64759040, y533760}}, right # {p1{x # 64936704, y449280}, p2 # {x64805632, y # 580352}}}, {top374272, bottom # 477696, left{p1 # {x64749568, 
                y # 294912}, p2{x # 64749568, y557056}}, right # {p1{x # 64815104, y294912}, p2 # {x64815104, y # 557056}}}, {top477696, bottom # 580352, left{p1 = {
                x # 64749568, y557056}, p2 # {x64749568, y # 636416}}, right{p1 # {x64936704, y # 449280}, p2{x # 64805632, y580352}}}, {top # 0, bottom1024, left = {
              p1 # {x-43152, y # 32767}, p2{x # 64749568, y636416}}, right # {p1{x # 0, y0}, p2 # {x-44136, y # 32767}}}, {top128, bottom # 1119354880, left{p1 = {
                x # -34232, y32767}, p2 # {x-163526103, y # 32767}}, right{p1 # {x257024, y # 137216}, p2{x # 257024, y137472}}}, {top # 256512, bottom137216, left = {
              p1 # {x256512, y # 137472}, p2{x # 0, y0}}, right # {p1{x # -34248, y32767}, p2 # {x-34248, y # 32767}}}, {top-163522390, bottom # 32767, left{p1 = {
                x # -32032, y32767}, p2 # {x-200346850, y # 32767}}, right{p1 # {x-42904, y # 32767}, p2{x # 2, y1}}}, {top # -34672, bottom32767, left # {p1{
                x # -163341703, y32767}, p2 # {x-34672, y # 32767}}, right{p1 # {x-32032, y # 32767}, p2{x # 2, y0}}}, {top # 18322840, bottom0, left # {p1{x = 2, 
                y # 0}, p2{x # -42904, y32767}}, right # {p1{x # -42848, y32767}, p2 # {x-34248, y # 32767}}}, {top-32280, bottom # 32767, left{p1 # {x0, y = 1024}, 
              p2 # {x-42904, y # 32767}}, right{p1 # {x0, y # 0}, p2{x # 0, y0}}}, {top # -34248, bottom32767, left # {p1{x # 18322832, y0}, p2 # {x-42848, 
---Type <return> to continue, or q <return> to quit---
                y # 32767}}, right{p1 # {x-40672, y # 32767}, p2{x # -163334274, y32767}}}, {top # 0, bottom0, left # {p1{x # 996, y13}, p2 # {x0, y = 13}}, 
            right # {p1{x # 1012, y19}, p2 # {x-163367776, y # 32767}}}, {top-163367952, bottom # 32767, left{p1 # {x196865, y # 1072693248}, p2{x = 284159488, 
                y # -19515425}}, right{p1 # {x-1717986918, y # 1069128089}, p2{x # -160723960, y32767}}}, {top # 0, bottom0, left # {p1{x # -160724544, y32767}, p2 = {
                x # -38624, y32767}}, right # {p1{x # -160723960, y32767}, p2 # {x17143424, y # 0}}}, {top17634464, bottom # 0, left{p1 # {x-42688, y # 32767}, p2{
                x # 17640160, y0}}, right # {p1{x # 0, y0}, p2 # {x13, y # 0}}}, {top2, bottom # 0, left{p1 # {x0, y # 0}, p2{x # -38880, y32767}}, right = {
              p1 # {x-163296615, y # 32767}, p2{x # 13, y0}}}, {top # 0, bottom0, left # {p1{x # 970, y32767}, p2 # {x13, y # 32767}}, right{p1 # {x18331360, 
                y # 0}, p2{x # 88, y1072693248}}}, {top # 0, bottom0, left # {p1{x # -41440, y32767}, p2 # {x-163341712, y # 32767}}, right{p1 # {x0, y # 0}, p2{
                x # 88, y0}}}, {top # 13, bottom0, left # {p1{x # 970, y13}, p2 # {x18331360, y # 0}}, right{p1 # {x6, y # 0}, p2{x # -41616, y32767}}}, {
            top # 0, bottom0, left # {p1{x # 2, y0}, p2 # {x0, y # 0}}, right{p1 # {x-39200, y # 32767}, p2{x # -256859248, y32767}}}, {top # 14420608, bottom0, 
            left # {p1{x # 13, y111}, p2 # {x-256859264, y # 32767}}, right{p1 # {x11101472, y # 0}, p2{x # 13, y0}}}, {top # -42320, bottom32767, left # {p1{
                x # 10999506, y0}, p2 # {x-256859248, y # 32767}}, right{p1 # {x14420608, y # 0}, p2{x # 64, y-111}}}, {top # -256859256, bottom32767, left # {p1{
                x # 8694656, y0}, p2 # {x-256505688, y # 32767}}, right{p1 # {x-42360, y # 32767}, p2{x # 11151622, y0}}}, {top # -256505688, bottom32767, left = {
              p1 # {x-42320, y # 32767}, p2{x # 11151853, y0}}, right # {p1{x # -256505688, y32767}, p2 # {x-38880, y # 32767}}}, {top3, bottom # 1, left{p1 = {
                x # -256859256, y32767}, p2 # {x11106750, y # 0}}, right{p1 # {x0, y # 1075445760}, p2{x # 17884736, y0}}}, {top # -39376, bottom32767, left # {p1{
                x # 17143424, y0}, p2 # {x487, y # 0}}, right{p1 # {x501, y # 0}, p2{x # 88084003, y0}}}, {top # -163285712, bottom32767, left # {p1{x = -256505688, 
                y # 32767}, p2{x # 501, y5}}, right # {p1{x # 88084033, y0}, p2 # {x88083573, y # 0}}}, {top14, bottom # 0, left{p1 # {x0, y # 3584}, p2{x = 0, 
                y # 1072693248}}, right{p1 # {x0, y # 0}, p2{x # 0, y0}}}, {top # 0, bottom1072693248, left # {p1{x # 0, y0}, p2 # {x0, y # 0}}, right{p1 = {
                x # 0, y3}, p2 # {x0, y # 0}}}, {top0, bottom # 257, left{p1 # {x250457, y # 277}, p2{x # 0, y1072693248}}, right # {p1{x # -163308158, y32767}, 
              p2 # {x0, y # 0}}}, {top0, bottom # 1072693248, left{p1 # {x0, y # 0}, p2{x # 0, y0}}, right # {p1{x # 1, y3}, p2 # {x0, y # 0}}}, {top0, 
            bottom # 250240, left{p1 # {x384, y # 250228}, p2{x # 511, y384}}, right # {p1{x # 511, y1}, p2 # {x250240, y # 256}}}, {top17143424, bottom = 0, 
            left # {p1{x # 0, y1076899840}, p2 # {x0, y # 1076428800}}, right{p1 # {x0, y # 1077116928}, p2{x # 0, y1076428800}}}, {top # 0, bottom0, left # {p1{
                x # 0, y1076076544}, p2 # {x0, y # 1076559872}}, right{p1 # {x-40432, y # 32767}, p2{x # 2, y0}}}, {top # 0, bottom0, left # {p1{x = 17640160, 
                y # 0}, p2{x # -38880, y32767}}, right # {p1{x # -39200, y32767}, p2 # {x-163286566, y # 32767}}}, {top-39200, bottom # 32767, left{p1 # {x2, 
                y # 0}, p2{x # -160723772, y32767}}, right # {p1{x # 5, y0}, p2 # {x6, y # 0}}}, {top-160723920, bottom # 32767, left{p1 # {x1, y # 0}, p2{x = 0, 
                y # 0}}, right{p1 # {x1, y # 7}, p2{x # -41648, y32767}}}, {top # 1, bottom0, left # {p1{x # -160724544, y0}, p2 # {x0, y # 1072693248}}, right{
              p1 # {x-160558788, y # 32767}, p2{x # -163393808, y32767}}}, {top # 0, bottom1072693248, left # {p1{x # 4992, y128}, p2 # {x4992, y # 128}}, right{
              p1 # {x1, y # 1}, p2{x # 4992, y256}}}, {top # 4992, bottom128, left # {p1{x # 4992, y0}, p2 # {x848, y # 0}}, right{p1 # {x0, y = 1072693248}, 
              p2 # {x0, y # 0}}}, {top1, bottom # 13, left{p1 # {x4992, y # 256}, p2{x # 4992, y128}}, right # {p1{x # 4992, y0}, p2 # {x244992, y = 0}}}, {
            top # 0, bottom1072693248, left # {p1{x # 0, y0}, p2 # {x0, y # 32767}}, right{p1 # {x-39124, y # 32767}, p2{x # -40432, y32767}}}, {top = -197123648, 
            bottom # 32767, left{p1 # {x-39744, y # 32767}, p2{x # -160724544, y32767}}, right # {p1{x # -38624, y32767}, p2 # {x2, y # 0}}}, {top17640160, 
            bottom # 0, left{p1 # {x-200345373, y # 32767}, p2{x # -39744, y32767}}, right # {p1{x # -160724544, y32767}, p2 # {x-38624, y # 32767}}}, {top2, 
            bottom # 0, left{p1 # {x-39216, y # 32767}, p2{x # -163283973, y32767}}, right # {p1{x # -39200, y32767}, p2 # {x-160724544, y # 32767}}}, {top-38576, 
            bottom # 32767, left{p1 # {x1, y # 3}, p2{x # -39040, y32767}}, right # {p1{x # 0, y32767}, p2 # {x-38880, y = 32767}}}}
        xtraps = <value optimised out>
        i = <value optimised out>
#27 0x00007ffff6444a99 in _cairo_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0x7fffffff7090, dst=0x10d2ae0, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=988, src_y=3, 
    dst_x=988, dst_y=-40264, width=4, height=4294936832, traps=0x7fffffff8ca0, num_traps=0, clip_region=0x7fffffff62b8) at /build/buildd/cairo-1.10.2/src/cairo-surface.c:2309
        status = <value optimised out>
        __PRETTY_FUNCTION__.10657 = "_cairo_surface_composite_trapezoids"
#28 0x00007ffff64475e0 in _composite_traps_draw_func (closure=0x1ffff65e0, op=4294936832, src=<value optimised out>, dst=<value optimised out>, dst_x=-32032, dst_y=<value optimised out>, 
    extents=0x7fffffff6f50, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:561
        info = 0x1ffff65e0
        status = <value optimised out>
        extents_region = 0x7fffffff82e0
#29 0x00007ffff6446703 in _clip_and_composite (clip=0x0, op=<value optimised out>, src=<value optimised out>, draw_func=0x7ffff6447530 <_composite_traps_draw_func>, 
    draw_closure=0x7fffffff65e0, dst=0x10d2ae0, extents=0x7fffffff6f50) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:472
        clip_surface = <value optimised out>
        clip_region = 0x1
        status = <value optimised out>
#30 0x00007fff00000004 in ?? ()
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#31 0x00007fffffff6f50 in ?? ()
No symbol table info available.
#32 0x00007ffff641dae1 in _cairo_gstate_stroke (gstate=0x1, path=0x2) at /build/buildd/cairo-1.10.2/src/cairo-gstate.c:1176
        source_pattern # {typeCAIRO_PATTERN_TYPE_SOLID, base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status # CAIRO_STATUS_SUCCESS, user_data{size = 2, 
              num_elements # 0, element_size0, elements # 0x10d2ae0, is_snapshot-160724136}, matrix # {xx1, yx # 6.9533460686327584e-310, xy6.9533558061073556e-310, 
              yy # 1.5810100666919889e-322, x06.9533558059891751e-310, y0 # 6.9533558059891751e-310}, filterCAIRO_FILTER_GOOD, extend = CAIRO_EXTEND_NONE, 
            has_component_alpha # -200346850}, solid{base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status # CAIRO_STATUS_SUCCESS, user_data{size = 2, 
                num_elements # 0, element_size0, elements # 0x10d2ae0, is_snapshot-160724136}, matrix # {xx1, yx # 6.9533460686327584e-310, xy6.9533558061073556e-310, 
                yy # 1.5810100666919889e-322, x06.9533558059891751e-310, y0 # 6.9533558059891751e-310}, filterCAIRO_FILTER_GOOD, extend = CAIRO_EXTEND_NONE, 
              has_component_alpha # -200346850}, color{red # 4.6174629661667086e-311, green6.953344312902453e-310, blue # 2.1729236899484389e-311, alpha-1, red_short = 38288, 
              green_short # 279, blue_short0, alpha_short # 0}}, surface{base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status = CAIRO_STATUS_SUCCESS, 
              user_data # {size2, num_elements # 0, element_size0, elements # 0x10d2ae0, is_snapshot-160724136}, matrix # {xx1, yx = 6.9533460686327584e-310, 
                xy # 6.9533558061073556e-310, yy1.5810100666919889e-322, x0 # 6.9533558059891751e-310, y06.9533558059891751e-310}, filter = CAIRO_FILTER_GOOD, 
              extend # CAIRO_EXTEND_NONE, has_component_alpha-200346850}, surface # 0x8800003dc80}, gradient{base # {base{type # CAIRO_PATTERN_TYPE_SOLID, ref_count{
                  ref_count # 0}, statusCAIRO_STATUS_SUCCESS, user_data # {size2, num_elements # 0, element_size0, elements # 0x10d2ae0, is_snapshot-160724136}, matrix = {
                  xx # 1, yx6.9533460686327584e-310, xy # 6.9533558061073556e-310, yy1.5810100666919889e-322, x0 # 6.9533558059891751e-310, y06.9533558059891751e-310}, 
                filter # CAIRO_FILTER_GOOD, extendCAIRO_EXTEND_NONE, has_component_alpha # -200346850}, n_stops253056, stops_size # 2176, stops0x7ffff221e3c7, stops_embedded = {{
                  offset # 2.1729236899484389e-311, color{red # -1, green9.0526818257206591e-317, blue # 6.9533558058840379e-310, alpha9.0526818257206591e-317, red_short = 26048, 
                    green_short # 65535, blue_short32767, alpha_short # 0}}, {offset6.9533558059899656e-310, color # {red6.9533477380496471e-310, green = 2.1219960429387517e-314, 
                    blue # 1.0609979207293907e-313, alpha6.9531436082559078e-310, red_short # 28572, green_short65535, blue_short # 32767, alpha_short0}}}}, linear # {base{
                base # {typeCAIRO_PATTERN_TYPE_SOLID, ref_count # {ref_count0}, status # CAIRO_STATUS_SUCCESS, user_data{size # 2, num_elements0, element_size = 0, 
                    elements # 0x10d2ae0, is_snapshot-160724136}, matrix # {xx1, yx # 6.9533460686327584e-310, xy6.9533558061073556e-310, yy = 1.5810100666919889e-322, 
                    x0 # 6.9533558059891751e-310, y06.9533558059891751e-310}, filter # CAIRO_FILTER_GOOD, extendCAIRO_EXTEND_NONE, has_component_alpha = -200346850}, 
                n_stops # 253056, stops_size2176, stops # 0x7ffff221e3c7, stops_embedded{{offset # 2.1729236899484389e-311, color{red # -1, green9.0526818257206591e-317, 
                      blue # 6.9533558058840379e-310, alpha9.0526818257206591e-317, red_short # 26048, green_short65535, blue_short # 32767, alpha_short0}}, {
                    offset # 6.9533558059899656e-310, color{red # 6.9533477380496471e-310, green2.1219960429387517e-314, blue = 1.0609979207293907e-313, 
                      alpha # 6.9531436082559078e-310, red_short28572, green_short # 65535, blue_short32767, alpha_short # 0}}}}, p1{x # -38272, y32767}, p2 # {x0, 
                y # 32767}}, radial{base # {base{type # CAIRO_PATTERN_TYPE_SOLID, ref_count{ref_count # 0}, statusCAIRO_STATUS_SUCCESS, user_data # {size2, num_elements = 0, 
                    element_size # 0, elements0x10d2ae0, is_snapshot # -160724136}, matrix{xx # 1, yx6.9533460686327584e-310, xy = 6.9533558061073556e-310, 
                    yy # 1.5810100666919889e-322, x06.9533558059891751e-310, y0 # 6.9533558059891751e-310}, filterCAIRO_FILTER_GOOD, extend = CAIRO_EXTEND_NONE, 
                  has_component_alpha # -200346850}, n_stops253056, stops_size # 2176, stops0x7ffff221e3c7, stops_embedded # {{offset2.1729236899484389e-311, color # {red-1, 
                      green # 9.0526818257206591e-317, blue6.9533558058840379e-310, alpha # 9.0526818257206591e-317, red_short26048, green_short # 65535, blue_short32767, 
                      alpha_short # 0}}, {offset6.9533558059899656e-310, color # {red6.9533477380496471e-310, green # 2.1219960429387517e-314, blue1.0609979207293907e-313, 
                      alpha # 6.9531436082559078e-310, red_short28572, green_short # 65535, blue_short32767, alpha_short # 0}}}}, c1{x # -38272, y32767}, r1 # 0, c2{
                x # 32767, y-2147483648}, r2 = -2147483648}}}
        style # {line_width0, line_cap # 284159488, line_join4275451871, miter_limit # 3.432768107304981e-320, dash0x7fffffff6f40, num_dashes = 4294929712, 
          dash_offset = 6.9533478670075988e-310}
        dash = {8.7153970431429236e-317, 6.9533477405348467e-310}
        clip # {path0x7fffffff7190, all_clipped = 2}
        status = CAIRO_STATUS_NO_MEMORY
#33 0xfed637df00000000 in ?? ()
No symbol table info available.
#34 0x00007fffffff7090 in ?? ()
No symbol table info available.
#35 0x3fb999999999999a in ?? ()
No symbol table info available.
#36 0x00007fff00000000 in ?? ()
No symbol table info available.
#37 0x0000000000000002 in ?? ()
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#38 0x00000000010d2ae0 in ?? ()
No symbol table info available.
#39 0x00007fffffff70c0 in ?? ()
No symbol table info available.
#40 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb) 
}}}

Upload new version to hackage

The latest hackage release (0.2.2) doesn't include the fix for newer versions of cairo. Could you please upload a new release?

Build Error with gtk-0.13.0.0

Hi Mikolaj
I'm haskell newbee, I build threadscope by cabal and it failed.

  • Linux 3.15.8-1-ARCH #1 SMP PREEMPT Fri Aug 1 08:53:42 CEST 2014 i686 GNU/Linux
  • The Glorious Glasgow Haskell Compilation System, version 7.8.3
  • gtk-0.13.0.0

''''
GUI/ProgressView.hs:92:15:
Could not deduce (System.Glib.UTFString.GlibString string0)
arising from a use of ‘labelNew’
from the context (WindowClass win)
bound by the type signature for
new :: WindowClass win => win -> IO () -> IO ProgressView
at GUI/ProgressView.hs:79:8-57
The type variable ‘string0’ is ambiguous
Note: there are several potential instances:
instance System.Glib.UTFString.GlibString
text-1.1.1.3:Data.Text.Internal.Text
-- Defined in ‘System.Glib.UTFString’
instance System.Glib.UTFString.GlibString [Char]
-- Defined in ‘System.Glib.UTFString’
In a stmt of a 'do' block: progText <- labelNew Nothing
In the expression:
do { win <- windowNew;
set win [containerBorderWidth := 10, windowTitle := "", ....];
progText <- labelNew Nothing;
set progText [miscXalign := 0, labelUseMarkup := True];
.... }
In an equation for ‘new’:
new parent cancelAction
= do { win <- windowNew;
set win [containerBorderWidth := 10, ....];
progText <- labelNew Nothing;
.... }

''''

Build errors on Threadscope: "ambiguous occurences"

Original reporter: sebas.chinoir@

Compiling version 0.2.2 from hackage with Cairo version 12.5.0 (current versions) gives a lot of "ambiguous occurences" errors for the variables height, width and Region on files GUI/Timeline/{Render,Timeline,SaveAs}.hs, for example:

GUI/Timeline/Render.hs:258:34:
Ambiguous occurrence height' It could refer to eitherGUI.Types.height',
imported from GUI.Types' at GUI/Timeline/Render.hs:19:1-16 orGraphics.Rendering.Cairo.height',
imported from Graphics.Rendering.Cairo' at GUI/Timeline/Render.hs:24:1-31 (and originally defined inGraphics.Rendering.Cairo.Types')

Hiding this variables from the Graphics.Rendering.Cairo package seems to solve the problem.

System: Arch Linux, x86-64

ThreadScope shows garbled characters when using Unicode characters in user event

Original reporter: shelarcy

Debug.Trace.traceEventIO output Unicode characters by UTF-8 String.

"ghc-events show" can show output Unicode characters' user event correctly.

import Debug.Trace
main = do
    traceEventIO "テスト"
    putStrLn "test"
$ ghc -O2 -threaded -eventlog Test.hs
[1 of 1] Compiling Main             ( Test.hs, Test.o )
Linking Test.exe ...

$ .\Test.exe +RTS -l
"test"
$ ghc-events show Test.eventlog > test.log
Event Types:
  (snip)

Events:
  (snip)
  1531003: cap 0: running thread 3
  1594090: cap 0: テスト
  1805086: cap 0: stopping thread 3 (making a foreign call)
  (snip)

But ThreadScope can't show Unicode characters' user event correctly. ThreadScope shows garbled characters.

This is bad. Unicode character is useful to find user event for me.

I'm using GHC 7.4.1 with threadscope 0.2.1 and gtk 0.12.3, on Windows.

"there was a problem loading the eventlog"

Original reporter: kowey

I get sporadic failures loading eventlogs from runs of my program. That is, run it once, and I will generate an eventlog that loads, run it another time, and I get one that fails to load.

The sort of errors I get look something like

null lhs: len # 3, startTime514649, endTime = 514649

There was a problem loading the eventlog

[SparkDuration {startT # 514649, deltaCSparkStats {rateCreated = 0.0,
rateDud # 0.0, rateOverflowed0.0, rateConverted # 0.0, rateFizzled0.0,
rateGCd # 0.0, meanPool0.0, maxPool # 0.0, minPool0.0}}
,SparkDuration {startT # 514649, deltaCSparkStats {rateCreated = 0.0,
rateDud # 0.0, rateOverflowed0.0, rateConverted # 0.0, rateFizzled0.0,
rateGCd # 0.0, meanPool0.0, maxPool # 0.0, minPool0.0}}
,SparkDuration {startT # 514649, deltaCSparkStats {rateCreated = 0.0,
rateDud # 0.0, rateOverflowed0.0, rateConverted # 0.0, rateFizzled0.0,
rateGCd # 0.0, meanPool0.0, maxPool # 0.0, minPool0.0}}
]

This is with TS 0.2.1, ghc-events 0.3.1.0, programs built with GHC HEAD (7.3.20111118)

Note that TS itself is built with GHC 7.2.2

weird spark creation/conversion graph

Original reporter: kowey

Looks like one of my eventlogs causes a display error where lines are being drawn from the top-left corner of the screen. I have to zoom in a couple of times and then enable the spark creation/conversion traces to this result.

This is the latest patch in my repository (no reordering)

Tue Nov 29 21:13:14 GMT 2011 Mikolaj Konarski [email protected]

  • Accept many events starting at the same time; fix #9

Threadscope - user error out of memory

Hello!

I'm working through Simon Marlow's Parallel Haskell book and am having issues with Threadscope. I've got a 1.2 MB eventlog file (sudoku3.eventlog) and can open it in Threadscope fine. However if I zoom in more than once it always crashes with the user error out of memory error. I tried threadscope --test ch8 and can zoom in and out fine with that file without it crashing. Is there is a way I can debug this further? Thanks for your assistance!

I followed instructions in section 2 here: https://wiki.haskell.org/Gtk2Hs/Mac
then step 1 here: https://wiki.haskell.org/ThreadScope#Installing_ThreadScope

Macbook Air 64 Bit OS X 10.10.2
Threadscope version 0.2.6
ghc 7.8.3

Needs updating for gtk/pango/glib changes

The gtk/pango/glib introduced breaking changes in 0.13.x which require some extra type signatures in few places where only String was accepted before.

GUI/ProgressView.hs:92:15:
    Could not deduce (System.Glib.UTFString.GlibString string0)
      arising from a use of ‘labelNew’
    from the context (WindowClass win)
      bound by the type signature for
                 new :: WindowClass win => win -> IO () -> IO ProgressView
      at GUI/ProgressView.hs:79:8-57
    The type variable ‘string0’ is ambiguous
    Note: there are several potential instances:
      instance System.Glib.UTFString.GlibString
                 text-1.1.1.3:Data.Text.Internal.Text
        -- Defined in ‘System.Glib.UTFString’
      instance System.Glib.UTFString.GlibString [Char]
        -- Defined in ‘System.Glib.UTFString’
    In a stmt of a 'do' block: progText <- labelNew Nothing
    In the expression:
      do { win <- windowNew;
           set win [containerBorderWidth := 10, windowTitle := "", ....];
           progText <- labelNew Nothing;
           set progText [miscXalign := 0, labelUseMarkup := True];
           .... }
    In an equation for ‘new’:
        new parent cancelAction
          = do { win <- windowNew;
                 set win [containerBorderWidth := 10, ....];
                 progText <- labelNew Nothing;
                 .... }

See gtk2hs site for details.

Regression: spark pool graph rendered wrongly when scrolling

Original reporter: MikolajKonarski

Spark pool graph is rendered wrongly when scrolling slowly to the right, so that fragments of the curve are drawn (in a wrong way) on the leftmost part of the canvas.

Present in version from Sep 7 04:24:53, wasn't there some time before, I think.

include spark sizes etc in ch8 test

Original reporter: kowey

This would make a good wont-fix, but I was thinking it would be nice if people could play with all the bells and whistles on the sample trace.

Lag when loading an eventlog, if no mouse activity over the TS window

Original reporter: MikolajKonarski

Quite often there is a lag of a few seconds when an eventlog loads. It may not be just speed of analyzing the new events, however, because clicking on the TS window seems to speed it up. It's also not consistent.

Some more tests:

Disabling the progress window and the forced evaluation of data does not affect the lag.

The lag is the same when loading an eventlog as when starting with an eventlog from the command line.

Moving the mouse in the TS window speeds things up. Keeping the mouse outside the TS window delays drawing forever (most of the time). More specifically, moving the mouse over any graphical element drawn by us cancels the lag, while moving it over text areas or even switching tabs in the lower pane does not end the lag (most of the time).

The problem is much less pronounced, but still there in 0.2.1, and as pronounced as currently in 0.2.0, both compiled with the newest ghc-events and libs. So it looks like a problem not in TS.

Edit: tested with TS 0.2.0 and ghc-events 0.3.0.1 and the lag persists. I have a hunch -threaded could help, but no idea why there's a problem. Nobody reported a similar problem so far, so it may be specific to 7.4.1 or the newest gtk2hs or my gtk version, too.

put good spark things on the *bottom* of conversion/creation graphs

Original reporter: kowey

Presumably we are most interested in seeing how much green we get. It's hard to tell when they sit on top of a lot of grey or orange. Maybe the green bits should go on on the bottom.

I suspect having the green be the base makes for a more honest picture.

(I'm having a slightly hard time articulating this at the moment, maybe it's just a passing notion... feel free to grab me on IRC if I still think the same thing a few days from now)

Please add (again) some facility for in-code bookmarks (v0.2.1)

Original reporter: brandon.m.simmons@

I've read the TODO for 0.2.1 and still don't understand why traceEvent messages as bookmarks were removed. Why not a little toggle or something? Or make the "Raw events" pane searchable?

I just spent 30 minutes utterly failing to find 3 events on the graph, flipping between "ghc-events show *.eventlog | less", and scrolling very delicately in "Raw events" trying to match two different time formats.

Meta note: how would I contribute to threadscope if I wanted to?

Stack Space Overflow

Original reporter: ecrockett3@

I just installed threadscope-0.2.2, and profiled my program (running with -ls -N4). When I load threadscope, it starts loading HECs, but then complains that there was a stack space overflow and crashes.

I manually installed threadscope-0.2.2 with -rtsopts to allow me to change the stack space size. My program ran for ~4.5 minutes on four cores and threadscope required -K1000000000 before it would successfully load the graph.

Can't scroll vertically

When I enable "event labels" using view menu, all the HECs are not fitting in my screen, but vertical scrollbar is not allowing me to scroll down to see other HECs.

Example: Here I have all 8 HECs listed:

threadscope-1

Here, I enabled "event labels" and I no longer have all the HECs on the screen, but I can't scroll either. (see the scrollbar)

threadscope-4

not enough space in left panel for trace expansion?

Original reporter: kowey

Another possible wont-fix:

To my screen, the left panel is wide enough to display a list of traces with checkboxes. If you expand any of the trace tree and then collapse it again, the checkboxes disappear, presumably because they are too far to the right.

Only reporting this because it can be easy to expand the traces by accident if you just click on them, for example, and the checkboxes disappearing can be a little bit confusing.

App locks up when histogram canvas too narrow

Original reporter: MikolajKonarski

Ts 0.2.1: 100% CPU taken, TS does not respond to any keystrokes, mouse cursor stuck at the resize icon and clicking does not work anywhere on the desktop.

How to trigger this (completely reproducible for me): switch to the Spark sizes tab, resize the sidebar pane slowly (if fast, no problem occurs), when the histogram canvas is a few pixels wide, CPU usage spikes and the app stops responding to input. The best backtrace I managed to get is below.

Perhaps I should just refuse drawing the histogram if the canvas width is too small (just as I refuse if height is too small to avoid division by zero for some calculations). It would be better though to understand the problem first, so that we are sure it can't happen independently under different circumstances. The fact that it takes over the user's computer is worrying, too.

Program received signal SIGINT, Interrupt.
0x00007ffff414bf03 in __poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=<value optimised out>) at ../sysdeps/unix/sysv/linux/poll.c:87
87  ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
    in ../sysdeps/unix/sysv/linux/poll.c
(gdb) bt
#0  0x00007ffff414bf03 in __poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=<value optimised out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007ffff19c0512 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ffff19c0a5f in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007ffff19c0ae4 in xcb_writev () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#4  0x00007ffff3d792a7 in _XSend () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#5  0x00007ffff3d79665 in _XFlush () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#6  0x00007ffff3316540 in XRenderCompositeTrapezoids () from /usr/lib/x86_64-linux-gnu/libXrender.so.1
#7  0x00007ffff646265f in _cairo_xlib_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0x7fffffff5200, abstract_dst=<value optimised out>, antialias=<value optimised out>, 
    src_x=593, src_y=35, dst_x=593, dst_y=35, width=5, height=490, traps=0x7fffffff4c18, num_traps=1, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-xlib-surface.c:2979
#8  0x00007ffff6444a99 in _cairo_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0x7fffffff5200, dst=0x112be00, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=593, src_y=35, 
    dst_x=593, dst_y=35, width=5, height=490, traps=0x7fffffff4c18, num_traps=1, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface.c:2309
#9  0x00007ffff64475e0 in _composite_traps_draw_func (closure=0x7fffffff4750, op=CAIRO_OPERATOR_OVER, src=<value optimised out>, dst=<value optimised out>, dst_x=0, 
    dst_y=<value optimised out>, extents=0x7fffffff50c0, clip_region=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:561
#10 0x00007ffff6446703 in _clip_and_composite (clip=0x0, op=<value optimised out>, src=<value optimised out>, draw_func=0x7ffff6447530 <_composite_traps_draw_func>, 
    draw_closure=0x7fffffff4750, dst=0x112be00, extents=0x7fffffff50c0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:472
#11 0x00007ffff64471da in _clip_and_composite_trapezoids (src=0x7fffffff5200, op=CAIRO_OPERATOR_OVER, dst=0x112be00, traps=0x7fffffff4bf0, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0, 
    extents=0x7fffffff50c0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:875
#12 0x00007ffff6447cd3 in _cairo_surface_fallback_stroke (surface=0x112be00, op=CAIRO_OPERATOR_OVER, source=0x7fffffff5200, path=<value optimised out>, stroke_style=0x7fffffff5300, 
    ctm=0xffff20, ctm_inverse=0xffff50, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at /build/buildd/cairo-1.10.2/src/cairo-surface-fallback.c:1113
#13 0x00007ffff6444511 in _cairo_surface_stroke (surface=0x112be00, op=CAIRO_OPERATOR_OVER, source=0x7fffffff5200, path=0x7ffff66b8c08, stroke_style=0x7fffffff5300, ctm=0xffff20, 
    ctm_inverse=0xffff50, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x7fffffff5330) at /build/buildd/cairo-1.10.2/src/cairo-surface.c:2215
#14 0x00007ffff641dad1 in _cairo_gstate_stroke (gstate=0xfffe30, path=0x7ffff66b8c08) at /build/buildd/cairo-1.10.2/src/cairo-gstate.c:1166
#15 0x00007ffff6414c00 in *INT_cairo_stroke_preserve (cr=0x7ffff66b88a0) at /build/buildd/cairo-1.10.2/src/cairo.c:2406
#16 0x00007ffff6414c19 in *INT_cairo_stroke (cr=0x7ffff66b88a0) at /build/buildd/cairo-1.10.2/src/cairo.c:2379
#17 0x000000000092a06e in sntJ_info ()
#18 0x42b8000000010000 in ?? ()
#19 0x4018000000000001 in ?? ()
#20 0x0000000000000000 in ?? ()
(gdb) quit

threadscope crashes on events from ghc-HEAD (2014-06-29)

Today I've tried to dig a bit in ghc performance bug:
https://ghc.haskell.org/trac/ghc/ticket/9221

After building ghc itself with threadscope support (I might fail to do it properly!)
I've got the following eventlog:
http://code.haskell.org/~slyfox/threadscope-bug-2014-06-29/ghc-stage2.eventlog (~8MB)

threadscope crashes with very uninformative error:
$ threadscope: Maybe.fromJust: Nothing
It comes from SummaryView.hs: 'scan (fromJust mcap) statsAccum ev'

Trying to filter out such events does not help much:
threadscope: Bad shift length-32

May I ask you to add some error handling to have an idea what's went wrong?
'ghc-events show' does not seem to fail on that file.

Thanks!

Threadscope crashes

Dominics-MacBook-Pro:Private dom$ threadscope 

(threadscope:22060): Gtk-WARNING **: Attempting to store changes into `/Users/dom/.local/share/recently-used.xbel', but failed: Failed to create file '/Users/dom/.local/share/recently-used.xbel.R2H7VX': No such file or directory

(threadscope:22060): Gtk-WARNING **: Attempting to set the permissions of `/Users/dom/.local/share/recently-used.xbel', but failed: No such file or directory
threadscope: user error (out of memory)
threadscope 0.2.6
ls -ltr ~/ESandbox.eventlog 
-rw-r--r--@ 1 dom  staff  102892260 Mar 27 14:47 /Users/dom/ESandbox.eventlog

With larger event logs this happened when zooming in. With this actual event log it happens when I try to export a png.

Print big times using large time units to avoid too long labels

Original reporter: MikolajKonarski

On very large eventlogs, the labels of histogram bars overwrite each other, because the numbers (spark lengths) grow too big. Extend and use the function that prints time in different units to handle large time values with large time units, that is kiloseconds and megaseconds, or perhaps minutes, hours, days, weeks, etc.

Feature Request: Retina Text on OS X

Supporting the Retina Display on OS X would really improve the look of ThreadScope. I've never developed with GTK before, but its possible to enable retina text by adding the following to the Info.plist file that goes inside Threadscope.app bundle:

<key>NSHighResolutionCapable</key>
<true/>

Here's a comparison of non-retina vs retina, using this technique (you may need to open these images up in a new window to see how blurry it looks currently):

screen shot 2014-05-18 at 2 54 11 pm

screen shot 2014-05-18 at 2 54 50 pm

I'm not sure if its intentional or not, but enabling retina text seems to have really cleaned up the interface as well by removing some visually-cluttering lines.

malloc: pointer being freed was not allocated

Original reporter: kowey

$ threadscope 
threadscope(57833,0x7fff7e0b3960) malloc: *** error for object 0x101837168: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

This is with

  • a 64 bit machine
  • running MacOS X 10.7
  • with GHC 7.2.1
  • threadscope 0.2.0
  • gtk-0.12.1

Enhance handling of large eventlogs

Original reporter: jan.stolarek@

When I enable detailed spark logging via -lf flag I end up with huge eventlog files (130MB). Attempting to load these into ThreadScope practically kills my OS - memory runs out, swapping begins and I am forced to kill TS (which takes some time before the OS actually responds and kills the process). This makes -lf flag useless for my program and I think this might not be uncommon situation. It would be good if TS supported some sort of lazy loading of big eventlogs, so users could at least view parts of the log.

Graphs not redrawn on reload

Original reporter: jan.stolarek@

When I load an eventlog, zoom in, update the eventlog (rerun the program that generates it) and finally reload eventlog in TS the graphs are not redrawn. I have to either zoom in or zoom out to see the new graphs.

TS 0.2.2 Win7 error loading log file - scanEvents: GCStatsGHC ModeEnd

Environment: Win 7 (32-bit)
TS 0.2.2
Event log generated by GHC 7.6.3 is the one from Parallel & Concurrent Programming in Haskell, Chapter 2.

ghc -O2 sudoku2.hs -threaded -rtsopts -eventlog

sudoku2 sudoku17.1000.txt +RTS -N2 -l

When I open the generated eventlog file I get a message box with the following error:

scanEvents: GCStatsGHC ModeEnd

TS then closes.

I can open other event log files fine - e.g. one generated from the sudoku1 program in the same chapter.

Change the colour of labels drawn over dark green (e.g., thread numbers)

Original reporter: MikolajKonarski

15:33 < JaffaCake> dcoutts_: can we get that dark green changed? it's hard to read the thread numbers
15:35 < dcoutts_> oh, that's an interesting point
15:35 < dcoutts_> we might want to invert the colour for labels drawn over the run colour
15:35 < dcoutts_> when it's dark
15:36 < dcoutts_> mikolaj: we should try drawing thread numbers in white
15:37 < dcoutts_> or keep them black but move them above/below the main run trace
15:37 < dcoutts_> JaffaCake: once we draw thread names rather than numbers (when available) we might
                  want to do it differently anyway
15:38 < dcoutts_> since labels will take more space

An invalid eventlog is generated

Original reporter: MikolajKonarski

See the eventlog sudoku3.eventlog.works.bz2 in #9 and the related discussion. Here's what Nicolas says:

22:09 <@zenzike> mikolaj: there is indeed something wrong with the sudoko3.eventlog.works file: there'a a running thread that goes back into the runnable state
22:18 <@zenzike> mikolaj: the thing is that its' not *that* broken
22:18 <@zenzike> mikolaj: it's just doing something that it shouldn't fairly early on
22:19 <@zenzike> mikolaj: the rest of the trace looks good ... I suspect that either there's a bug in the RTS, or I'm being too strict
22:24 <@zenzike> should a thread that is running fire off a "thread runnable" event?

TS does not compile under Windows 7

Original reporter: MikolajKonarski

Compiler complains that widgetSetCanFocus is out of scope.
Compiles OK with the occurence of widgetSetCanFocus removed.

Versions: gtk2hs is 0.12.2, TS is 0.2.1 and GTK is 2.24.8.

The problem may be due to conditional compilation in gtk2hs,
which for that particular GTK version may switch off the widgetSetCanFocus. Not verified in the code.

TS crash under Windows 7

Original reporter: MikolajKonarski

TS (with widgetSetCanFocus commented out, see #21) crashes under Windows 7 every time an eventlog is loaded.

Backtrace is:

_cairo_win32_scaled_font_ucs4_to_index:GetGlyphIndicesW: Unknown GDI error>threa
dscope: user error (out of memory)

Versions: Haskell Platform is 2011.4.0.0, gtk2hs is 0.12.2, TS is 0.2.1 and GTK is 2.24.8. Look system-specific and was not reproduced with any other GTK version or on any other system, hence the minor priority.

Gtk2hs was installed without any problems, demos were compiled and launched succesfully.

See the full report by Kirill Kolodyazhniy on parallel-haskell.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.