<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    OK I forgot to send you the backtrace:<br>
    <br>
    <tt>Program received signal SIGSEGV, Segmentation fault.</tt><tt><br>
    </tt><tt>[Switching to Thread 6284.0xec4]</tt><tt><br>
    </tt><tt>sse2_composite_src_x888_8888 (imp=0x1a2f90, info=0xe5e8fc)
      at pixman-sse2.c:2860</tt><tt><br>
    </tt><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in pixman-sse2.c</tt><tt><br>
    </tt><tt>(gdb) 2860&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pixman-sse2.c: No such file or directory.</tt><tt><br>
    </tt><tt>#0&nbsp; sse2_composite_src_x888_8888 (imp=0x1a2f90,
      info=0xe5e8fc) at pixman-sse2.c:2860</tt><tt><br>
    </tt><tt>#1&nbsp; 0x6a352543 in pixman_image_composite32 (op=&lt;value
      optimized out&gt;, src=0xe7c6c0, mask=0x0, dest=0xe79188,
      src_x=28, src_y=56, mask_x=56, mask_y=113, dest_x=56, dest_y=113,
      width=24, height=18) at pixman.c:712</tt><tt><br>
    </tt><tt>#2&nbsp; 0x6a6c05b6 in composite_boxes (_dst=0xe71928,
      op=CAIRO_OPERATOR_SATURATE, abstract_src=0xe7a1c8,
      abstract_mask=0x0, src_x=-28, src_y=-57, mask_x=0, mask_y=0,
      dst_x=0, dst_y=0, boxes=0xe5f260, extents=0xe5f500) at
      cairo-image-compositor.c:523</tt><tt><br>
    </tt><tt>#3&nbsp; 0x6a6f4322 in composite_aligned_boxes
      (compositor=&lt;value optimized out&gt;, extents=0xe5f4c8,
      boxes=0xe5f260) at cairo-spans-compositor.c:665</tt><tt><br>
    </tt><tt>#4&nbsp; clip_and_composite_boxes (compositor=&lt;value
      optimized out&gt;, extents=0xe5f4c8, boxes=0xe5f260) at
      cairo-spans-compositor.c:859</tt><tt><br>
    </tt><tt>#5&nbsp; 0x6a6f4a1b in clip_and_composite_boxes
      (compositor=0x6a75c260, extents=0xe5f4c8, boxes=0xe5f260) at
      cairo-spans-compositor.c:821</tt><tt><br>
    </tt><tt>#6&nbsp; 0x6a6f4b20 in _cairo_spans_compositor_paint
      (_compositor=0x6a75c260, extents=0xe5f4c8) at
      cairo-spans-compositor.c:960</tt><tt><br>
    </tt><tt>#7&nbsp; 0x6a6b5190 in _cairo_compositor_paint
      (compositor=0x6a75c260, surface=0xe71928,
      op=CAIRO_OPERATOR_SATURATE, source=0xe5f810, clip=0x0) at
      cairo-compositor.c:65</tt><tt><br>
    </tt><tt>#8&nbsp; 0x6a6c6b51 in _cairo_image_surface_paint
      (abstract_surface=0xe71928, op=CAIRO_OPERATOR_SATURATE,
      source=0xe5f810, clip=0x0) at cairo-image-surface.c:918</tt><tt><br>
    </tt><tt>#9&nbsp; 0x6a6f7b14 in _cairo_surface_paint (surface=0xe71928,
      op=CAIRO_OPERATOR_SATURATE, source=0xe5f810, clip=0x0) at
      cairo-surface.c:2006</tt><tt><br>
    </tt><tt>#10 _cairo_surface_paint (surface=0xe71928,
      op=CAIRO_OPERATOR_SATURATE, source=0xe5f810, clip=0x0) at
      cairo-surface.c:1981</tt><tt><br>
    </tt><tt>#11 0x6a6bd724 in _cairo_gstate_paint (gstate=0xe74080) at
      cairo-gstate.c:1067</tt><tt><br>
    </tt><tt>#12 0x6a6af88b in cairo_paint (cr=0xe73f00) at cairo.c:1999</tt><tt><br>
    </tt><tt>#13 0x6ea16e68 in read_tile (osr=0xe61000, cr=0xe73f00,
      level=6, tile_x=29, tile_y=97, translate_x=57.125,
      translate_y=114.375, cache=0xe664c8, arg=0x0) at
      src/openslide-ops-jpeg.c:728</tt><tt><br>
    </tt><tt>#14 0x6ea13690 in _openslide_read_tiles (cr=0xe73f00,
      level=6, start_tile_x=26, start_tile_y=89, end_tile_x=40,
      end_tile_y=107, offset_x=1.75, offset_y=0.625, advance_x=19.625,
      advance_y=14.375, osr=0xe61000, cache=0xe664c8, arg=0x0,
      read_tile=0x6ea16bc0 &lt;read_tile&gt;) at
      src/openslide-tilehelper.c:74</tt><tt><br>
    </tt><tt>#15 0x6ea14a7a in paint_region (osr=0xe61000, cr=0xe73f00,
      x=32768, y=81920, level=6, w=256, h=256) at
      src/openslide-ops-jpeg.c:797</tt><tt><br>
    </tt><tt>#16 0x6ea11e35 in read_region (osr=0xe61000, cr=0xe73f00,
      x=32768, y=81920, level=6, w=256, h=256) at src/openslide.c:542</tt><tt><br>
    </tt><tt>#17 0x6ea1245f in openslide_read_region (osr=0xe61000,
      dest=0xfe00e8, x=32768, y=81920, level=6, w=256, h=256) at
      src/openslide.c:627</tt><tt><br>
    </tt><tt>#18 0x010b1704 in ?? ()</tt><tt><br>
    </tt><tt>#19 0x751f33aa in KERNEL32!BaseCleanupAppcompatCacheSupport
      () from C:\Windows\syswow64\kernel32.dll</tt><tt><br>
    </tt><tt>#20 0x00e5ffa0 in ?? ()</tt><tt><br>
    </tt><tt>#21 0x775b9ef2 in ntdll!RtlpNtSetValueKey () from
      C:\Windows\system32\ntdll.dll</tt><tt><br>
    </tt><tt>#22 0x00000000 in ?? ()</tt><tt><br>
    </tt><tt>(gdb)</tt><tt><br>
    </tt><br>
    Hope it helps!<br>
    <br>
    <div class="moz-cite-prefix">On 17/11/2012 12:05 &#960;&#956;, Agelos Pappas
      wrote:<br>
    </div>
    <blockquote cite="mid:50A6B89C.9050902@smartcode.gr" type="cite">Hi,
      <br>
      <br>
      as I've reported in another message OpenSlide crashes reporting
      segmentation faults when running in a windows multi-threaded
      application. The problem occurs with any slide format, but is
      easier to reproduce with MIRAX files. I have been able to
      reproduce the problem in both x86 and x64 versions of OpenSlide by
      writing an application that spawns N threads which read AxA tiles
      starting from the top level and walking to the bottom. The
      application doesn't always crash and when it does, it is not at
      the same point.
      <br>
      <br>
      The following (C++) function, if spawned in multiple threads (4
      seem to be enough for me) will make the application crash
      reporting access violation:
      <br>
      <br>
      DWORD WINAPI SlideWalk(LPVOID lpParam)
      <br>
      {
      <br>
      &nbsp;&nbsp;&nbsp; const int TileSize = 256;
      <br>
      &nbsp;&nbsp;&nbsp; __int64 w, h;
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; int *osr = openslide_open(PATH_TO_SLIDE);
      <br>
      &nbsp;&nbsp;&nbsp; int numLevels = openslide_get_level_count(osr);
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; for (int i = numLevels - 1; i &gt;= 0; i--)
      <br>
      &nbsp;&nbsp;&nbsp; {
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openslide_get_level_dimensions(osr, i, &amp;w, &amp;h);
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double d = openslide_get_level_downsample(osr, i);
      <br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int y = 0; y &lt; h; y += TileSize)
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; w; x += TileSize)
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int *buffer = new unsigned int[TileSize *
      TileSize];
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openslide_read_region(osr, buffer, floorl(x * d),
      floorl(y * d), i, TileSize, TileSize);
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete []buffer;
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
      <br>
      &nbsp;&nbsp;&nbsp; }
      <br>
      &nbsp;&nbsp;&nbsp; openslide_close(osr);
      <br>
      &nbsp;&nbsp;&nbsp; return 0;
      <br>
      }
      <br>
      <br>
      The above is just a quick test compiled under windows. I ran it
      using gdb in Cygwin and I got errors like these:
      <br>
      <br>
      Program received signal SIGSEGV, Segmentation fault.
      <br>
      [Switching to Thread 7396.0x1e00]
      <br>
      sse2_composite_src_x888_8888 (imp=0x563c08, info=0xbbe22c) at
      pixman-sse2.c:2860
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in pixman-sse2.c
      <br>
      <br>
      In all my tests the segmentation fault happens in libpixman, but
      not always at the same line.
      <br>
      I've written a similar program in Linux but it doesn't seem to
      crash, even though valgrind reported some errors in libpixman too.
      <br>
      <br>
      Can someone test the attached C program in Linux using a public
      MRXS slide to see if they get any seg faults?
      <br>
      <br>
      Regards
      <br>
      Pappas Agelos
      <br>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
openslide-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:openslide-users@lists.andrew.cmu.edu">openslide-users@lists.andrew.cmu.edu</a>
<a class="moz-txt-link-freetext" href="https://lists.andrew.cmu.edu/mailman/listinfo/openslide-users">https://lists.andrew.cmu.edu/mailman/listinfo/openslide-users</a>
</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">-----
No virus found in this message.
Checked by AVG - <a class="moz-txt-link-abbreviated" href="http://www.avg.com">www.avg.com</a>
Version: 2012.0.2221 / Virus Database: 2629/5398 - Release Date: 11/16/12
</pre>
    </blockquote>
    <br>
  </body>
</html>