Bug 12504

Summary: [evince] cairo context error: NULL pointer
Product: poppler Reporter: Sebastien Bacher <seb128>
Component: cairo backendAssignee: poppler-bugs <poppler-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: lakostis
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Anothe PDF with the same issue

Description Sebastien Bacher 2007-09-20 13:16:58 UTC
The bug has been opened on https://bugs.launchpad.net/bugs/140643

"Binary package hint: evince

Hello! I'm using Ubuntu Gutsy, and after a big update this morning I noticed some strange behavior.

I'm not sure if this is related, but I noticed Evince throwing up repeated warnings of "cairo context error: NULL pointer" in the console when opening a certain file. I tried with a couple different files, and it didn't happen, so it might be a different bug.

http://launchpadlibrarian.net/9338165/IN100_TD_2005_06.pdf
IN100_TD_2005_06.pdf (220.2 KiB, application/pdf)

This is the file showing the warnings, please check if it happens for others, too."
Comment 1 Pascal Terjan 2007-10-02 05:58:55 UTC
Created attachment 11858 [details]
Anothe PDF with the same issue
Comment 2 Pascal Terjan 2007-10-02 14:10:57 UTC
#0  _cairo_set_error (cr=0x851d520, status=CAIRO_STATUS_NULL_POINTER) at cairo.c:119
No locals.
#1  0xb755aa9d in CairoOutputDev::drawImageMask (this=0x853a2f0, state=0x8538aa8, ref=0x0, str=0x81550a0, width=16, height=16, invert=1, 
    inlineImg=1) at CairoOutputDev.cc:686
        matrix = {xx = 0, yx = 0, xy = 1.350196105240399e-268, yy = -3.7589387670182106e-43, x0 = 6.8962046478836532e-316, 
  y0 = 5.3205314387727897e-315}
#2  0xb755ad04 in CairoImageOutputDev::drawImageMask (this=0x853a2f0, state=0x8538aa8, ref=0x0, str=0x81550a0, width=16, height=16, invert=1, 
    inlineImg=1) at CairoOutputDev.cc:1391
        cr = (cairo_t *) 0x851d520
        surface = (cairo_surface_t *) 0x851cf50
        image = <value optimized out>
#3  0xb7423bf0 in Gfx::doImage (this=0x83f96a0, ref=0x0, str=0x81550a0, inlineImg=1) at Gfx.cc:3503
        dict = <value optimized out>
        maskDict = <value optimized out>
        width = 16
        height = 16
        bits = 1
        maskBits = <value optimized out>
        csMode = streamCSNone
        mask = -1234755788
        invert = <value optimized out>
        colorSpace = <value optimized out>
        maskColorSpace = <value optimized out>
        colorMap = <value optimized out>
        maskColorMap = <value optimized out>
        maskObj = {type = objNone, {booln = 1084023203, intg = 1084023203, real = 1.5389549160653998e-313, string = 0x409ce1a3, 
    name = 0x409ce1a3 <Address 0x409ce1a3 out of bounds>, array = 0x409ce1a3, dict = 0x409ce1a3, stream = 0x409ce1a3, ref = {
      num = 1084023203, gen = 7}, cmd = 0x409ce1a3 <Address 0x409ce1a3 out of bounds>}}
        smaskObj = {type = objNone, {booln = 139698928, intg = 139698928, real = 2.765496572363419e-313, string = 0x853a2f0, 
    name = 0x853a2f0 "È8V·(ŠS\bÓwÅþ\005Ÿ\202@\r\220n\004Ñé\202@", array = 0x853a2f0, dict = 0x853a2f0, stream = 0x853a2f0, ref = {
      num = 139698928, gen = 13}, cmd = 0x853a2f0 "È8V·(ŠS\bÓwÅþ\005Ÿ\202@\r\220n\004Ñé\202@"}}
        maskColors = {-1227452428, -1227448032, 138572528, -1234755976, -1228308464, -1227448032, 138572528, 138385168, -1, 0, 138572520, 1, 
  6, 0, -1219323620, 135614624, -1234755840, -1234755756, -1219881185, 138572528, 13, -1219323620, -1220122968, 138572528, 138755792, 
  -1234755864, -1219323620, -1219323620, 135614624, 139523360, -1220062344, -1234755864, 138572528, 139523360, -1234755864, -1227452428, 0, 
  -1227448032, -1234755864, -1228314697, -1234755864, -1234755840, 13, 139523360, -1219674917, 13, 139471704, 1084023203, 13, 139523360, 
  -1220066966, 13, 138572528, 1084023203, -1219323620, 139657936, 139523360, -1234755756, -1220404511, 139523360, -1234755744, -1234755744, 
  0, 0}
        maskWidth = <value optimized out>
        maskHeight = <value optimized out>
        maskInvert = <value optimized out>
        maskStr = <value optimized out>
        obj1 = {type = objNone, {booln = 139506480, intg = 139506480, real = 1848.4092114076011, string = 0x850b330, 
    name = 0x850b330 "Ð>E\bà¿\024\b\b", array = 0x850b330, dict = 0x850b330, stream = 0x850b330, ref = {num = 139506480, gen = 1084023203}, 
    cmd = 0x850b330 "Ð>E\bà¿\024\b\b"}}
        obj2 = {type = objNone, {booln = 1, intg = 1, real = 3.3951932655938423e-313, string = 0x1, name = 0x1 <Address 0x1 out of bounds>, 
    array = 0x1, dict = 0x1, stream = 0x1, ref = {num = 1, gen = 16}, cmd = 0x1 <Address 0x1 out of bounds>}}
        i = <value optimized out>
#4  0xb7424830 in Gfx::opBeginImage (this=0x83f96a0, args=0xb6672034, numArgs=0) at Gfx.cc:3921
        str = (Stream *) 0x81550a0
        c1 = <value optimized out>
        c2 = <value optimized out>
#5  0xb742271a in Gfx::execOp (this=0x83f96a0, cmd=0xb66721c0, args=0xb6672034, numArgs=0) at Gfx.cc:726
        op = (Operator *) 0xb7539384
        name = 0x8432e40 "BI"
        argPtr = (Object *) 0xb6672034
        i = 0
#6  0xb742290c in Gfx::go (this=0x83f96a0, topLevel=1) at Gfx.cc:594
        obj = {type = objCmd, {booln = 138620480, intg = 138620480, real = 1848.409211206148, string = 0x8432e40, name = 0x8432e40 "BI", 
    array = 0x8432e40, dict = 0x8432e40, stream = 0x8432e40, ref = {num = 138620480, gen = 1084023203}, cmd = 0x8432e40 "BI"}}
        args = {{type = objNone, {booln = 0, intg = 0, real = 1816.4091796875, string = 0x0, name = 0x0, array = 0x0, dict = 0x0, 
      stream = 0x0, ref = {num = 0, gen = 1083990435}, cmd = 0x0}}, {type = objNone, {booln = 32, intg = 32, real = 1816.4091796875073, 
      string = 0x20, name = 0x20 <Address 0x20 out of bounds>, array = 0x20, dict = 0x20, stream = 0x20, ref = {num = 32, gen = 1083990435}, 
      cmd = 0x20 <Address 0x20 out of bounds>}}, {type = objNone, {booln = 32, intg = 32, real = 1816.4091796875073, string = 0x20, 
      name = 0x20 <Address 0x20 out of bounds>, array = 0x20, dict = 0x20, stream = 0x20, ref = {num = 32, gen = 1083990435}, 
      cmd = 0x20 <Address 0x20 out of bounds>}}, {type = objNone, {booln = 0, intg = 0, real = 1816.4091796875, string = 0x0, name = 0x0, 
      array = 0x0, dict = 0x0, stream = 0x0, ref = {num = 0, gen = 1083990435}, cmd = 0x0}}, {type = objNone, {booln = 0, intg = 0, 
      real = 3477.5, string = 0x0, name = 0x0, array = 0x0, dict = 0x0, stream = 0x0, ref = {num = 0, gen = 1084959488}, cmd = 0x0}}, {
    type = objNone, {booln = -687194767, intg = -687194767, real = 1848.4100000000001, string = 0xd70a3d71, 
      name = 0xd70a3d71 <Address 0xd70a3d71 out of bounds>, array = 0xd70a3d71, dict = 0xd70a3d71, stream = 0xd70a3d71, ref = {
        num = -687194767, gen = 1084023203}, cmd = 0xd70a3d71 <Address 0xd70a3d71 out of bounds>}}, {type = objNone, {booln = 3, intg = 3, 
      real = -3.3358676278349967e-42, string = 0x3, name = 0x3 <Address 0x3 out of bounds>, array = 0x3, dict = 0x3, stream = 0x3, ref = {
        num = 3, gen = -1219323620}, cmd = 0x3 <Address 0x3 out of bounds>}}, {type = objNone, {booln = -1220090704, intg = -1220090704, 
      real = 1.4938075492562451e-268, string = 0xb746e4b0, name = 0xb746e4b0 "\203øÿuË\213O\004\213\226\034\200", array = 0xb746e4b0, 
      dict = 0xb746e4b0, stream = 0xb746e4b0, ref = {num = -1220090704, gen = 139705008}, 
      cmd = 0xb746e4b0 "\203øÿuË\213O\004\213\226\034\200"}}, {type = objNone, {booln = 7, intg = 7, real = 1.5464386805216672e-268, 
      string = 0x7, name = 0x7 <Address 0x7 out of bounds>, array = 0x7, dict = 0x7, stream = 0x7, ref = {num = 7, gen = 139750564}, 
      cmd = 0x7 <Address 0x7 out of bounds>}}, {type = objNone, {booln = 139471468, intg = 139471468, real = 1.4394233294643135e-268, 
      string = 0x8502a6c, name = 0x8502a6c "\b", array = 0x8502a6c, dict = 0x8502a6c, stream = 0x8502a6c, ref = {num = 139471468, 
        gen = 139657936}, cmd = 0x8502a6c "\b"}}, {type = objNone, {booln = 139657936, intg = 139657936, real = 1.478787542490131e-268, 
      string = 0x85302d0, name = 0x85302d0 "h\211R·\003", array = 0x85302d0, dict = 0x85302d0, stream = 0x85302d0, ref = {num = 139657936, 
        gen = 139692008}, cmd = 0x85302d0 "h\211R·\003"}}, {type = objNone, {booln = 139781440, intg = 139781440, 
      real = 1.4394233295476944e-268, string = 0x854e540, name = 0x854e540 "\005", array = 0x854e540, dict = 0x854e540, stream = 0x854e540, 
      ref = {num = 139781440, gen = 139657936}, cmd = 0x854e540 "\005"}}, {type = objNone, {booln = 139657936, intg = 139657936, 
      real = -3.3358677168301661e-42, string = 0x85302d0, name = 0x85302d0 "h\211R·\003", array = 0x85302d0, dict = 0x85302d0, 
      stream = 0x85302d0, ref = {num = 139657936, gen = -1219323620}, cmd = 0x85302d0 "h\211R·\003"}}, {type = objNone, {booln = 139471468, 
      intg = 139471468, real = 2.1909038518791191e-314, string = 0x8502a6c, name = 0x8502a6c "\b", array = 0x8502a6c, dict = 0x8502a6c, 
      stream = 0x8502a6c, ref = {num = 139471468, gen = 1}, cmd = 0x8502a6c "\b"}}, {type = objNone, {booln = 139657936, intg = 139657936, 
      real = -3.3358677168301661e-42, string = 0x85302d0, name = 0x85302d0 "h\211R·\003", array = 0x85302d0, dict = 0x85302d0, 
      stream = 0x85302d0, ref = {num = 139657936, gen = -1219323620}, cmd = 0x85302d0 "h\211R·\003"}}, {type = objNone, {booln = -1220144477, 
      intg = -1220144477, real = 1.4394241190589265e-268, string = 0xb74612a3, 
      name = 0xb74612a3 "\203øÿuß\203ý\001tÚ\213F\020\213\020\211\004$ÿR\020\211<$èè\200ùÿ\213F\b\213V\004\203À\001\211F\b;B\f}Á\211\024$\211|$\b\211D$\004èG>ùÿ\213F\020\213\020\211\004$ÿR\f\203~\f\ruŠ\203Ä\fžÿÿÿÿ[^_]Ã\220\203ì\034\211t$\030\213t$ \211\\$\024èÓ\205ùÿ\201Ã\b\206\f", 
      array = 0xb74612a3, dict = 0xb74612a3, stream = 0xb74612a3, ref = {num = -1220144477, gen = 139657936}, 
      cmd = 0xb74612a3 "\203øÿuß\203ý\001tÚ\213F\020\213\020\211\004$ÿR\020\211<$èè\200ùÿ\213F\b\213V\004\203À\001\211F\b;B\f}Á\211\024$\211|$\
b\211D$\004èG>ùÿ\213F\020\213\020\211\004$ÿR\f\203~\f\ruŠ\203Ä\fžÿÿÿÿ[^_]Ã\220\203ì\034\211t$\030\213t$ \211\\$\024èÓ\205ùÿ\201Ã\b\206\f"}}, {
    type = objNone, {booln = 0, intg = 0, real = -3.3358676278349948e-42, string = 0x0, name = 0x0, array = 0x0, dict = 0x0, stream = 0x0, 
      ref = {num = 0, gen = -1219323620}, cmd = 0x0}}, {type = objNone, {booln = -1219658356, intg = -1219658356, 
      real = 1.2239792249744756e-268, string = 0xb74d7d8c, name = 0xb74d7d8c "Badly formatted number", array = 0xb74d7d8c, dict = 0xb74d7d8c, 
      stream = 0xb74d7d8c, ref = {num = -1219658356, gen = 139471456}, cmd = 0xb74d7d8c "Badly formatted number"}}, {type = objNone, {
      booln = 139471456, intg = 139471456, real = 2.1909038459503313e-314, string = 0x8502a60, name = 0x8502a60 "ýÿÿÿÀŠB\b", 
      array = 0x8502a60, dict = 0x8502a60, stream = 0x8502a60, ref = {num = 139471456, gen = 1}, cmd = 0x8502a60 "ýÿÿÿÀŠB\b"}}, {
    type = objNone, {booln = -1219323620, intg = -1219323620, real = 5.7635614610910303e-314, string = 0xb752991c, 
      name = 0xb752991c "he\027", array = 0xb752991c, dict = 0xb752991c, stream = 0xb752991c, ref = {num = -1219323620, gen = 2}, 
      cmd = 0xb752991c "he\027"}}, {type = objNone, {booln = 2, intg = 2, real = -1.9842851529720149e-42, string = 0x2, 
      name = 0x2 <Address 0x2 out of bounds>, array = 0x2, dict = 0x2, stream = 0x2, ref = {num = 2, gen = -1220141022}, 
      cmd = 0x2 <Address 0x2 out of bounds>}}, {type = objNone, {booln = 0, intg = 0, real = -1.2682936740564991e-46, string = 0x0, 
      name = 0x0, array = 0x0, dict = 0x0, stream = 0x0, ref = {num = 0, gen = -1234752624}, cmd = 0x0}}, {type = objNone, {
      booln = 139705008, intg = 139705008, real = 1.2240107843951351e-268, string = 0x853bab0, name = 0x853bab0 "š\214R·\001", 
      array = 0x853bab0, dict = 0x853bab0, stream = 0x853bab0, ref = {num = 139705008, gen = 139471484}, cmd = 0x853bab0 "š\214R·\001"}}, {
    type = objNone, {booln = -1220074030, intg = -1220074030, real = 1.4938491409391502e-268, string = 0xb74725d2, 
      name = 0xb74725d2 "\215\004\a;\206$\001", array = 0xb74725d2, dict = 0xb74725d2, stream = 0xb74725d2, ref = {num = -1220074030, 
        gen = 139705044}, cmd = 0xb74725d2 "\215\004\a;\206$\001"}}, {type = objNone, {booln = 256, intg = 256, 
      real = 8.0378229195310914e-269, string = 0x100, name = 0x100 <Address 0x100 out of bounds>, array = 0x100, dict = 0x100, 
      stream = 0x100, ref = {num = 256, gen = 138754896}, cmd = 0x100 <Address 0x100 out of bounds>}}, {type = objNone, {booln = 1069463633, 
      intg = 1069463633, real = -3.5982245292328333e+91, string = 0x3fbeb851, name = 0x3fbeb851 <Address 0x3fbeb851 out of bounds>, 
      array = 0x3fbeb851, dict = 0x3fbeb851, stream = 0x3fbeb851, ref = {num = 1069463633, gen = -755914243}, 
      cmd = 0x3fbeb851 <Address 0x3fbeb851 out of bounds>}}, {type = objNone, {booln = 139705008, intg = 139705008, 
      real = -3.3358677168601621e-42, string = 0x853bab0, name = 0x853bab0 "š\214R·\001", array = 0x853bab0, dict = 0x853bab0, 
      stream = 0x853bab0, ref = {num = 139705008, gen = -1219323620}, cmd = 0x853bab0 "š\214R·\001"}}, {type = objNone, {booln = -1220079729, 
      intg = -1220079729, real = -1.5808277661987181e-44, string = 0xb7470f8f, 
      name = 0xb7470f8f "\203ÿÿ\211Åt*\203øÿt%\211ø\203à\017\203ø\bt/\213\006\2114$ÿP$\215\223Hñúÿ\211T$\004\211\004$èÉHøÿ\220\213\\$\f\213t$\020\213|$\024\213l$\030\203Ä\034ÃÁç\bºC\b!\204\215\f/\211È÷ê\211ÈÁø\037\001ÊÁú\004)Â\211ÐÁà\005)Ð9Áu-\203å u\fÇ\2064\205", array = 0xb7470f8f, 
      dict = 0xb7470f8f, stream = 0xb7470f8f, ref = {num = -1220079729, gen = -1227452428}, 
      cmd = 0xb7470f8f "\203ÿÿ\211Åt*\203øÿt%\211ø\203à\017\203ø\bt/\213\006\2114$ÿP$\215\223Hñúÿ\211T$\004\211\004$èÉHøÿ\220\213\\$\f\213t$\020\213|$\024\213l$\030\203Ä\034ÃÁç\bºC\b!\204\215\f/\211È÷ê\211ÈÁø\037\001ÊÁú\004)Â\211ÐÁà\005)Ð9Áu-\203å u\fÇ\2064\205"}}, {type = objNone, {
      booln = -1227448032, intg = -1227448032, real = -1.2661761045618525e-46, string = 0xb6d6a120, name = 0xb6d6a120 "", array = 0xb6d6a120, 
      dict = 0xb6d6a120, stream = 0xb6d6a120, ref = {num = -1227448032, gen = -1234755160}, cmd = 0xb6d6a120 ""}}, {type = objNone, {
      booln = -1227448032, intg = -1227448032, real = 8.6395387524909518e-313, string = 0xb6d6a120, name = 0xb6d6a120 "", array = 0xb6d6a120, 
      dict = 0xb6d6a120, stream = 0xb6d6a120, ref = {num = -1227448032, gen = 40}, cmd = 0xb6d6a120 ""}}, {type = objNone, {booln = 40, 
      intg = 40, real = 2.1219958107278981e-314, string = 0x28, name = 0x28 <Address 0x28 out of bounds>, array = 0x28, dict = 0x28, 
      stream = 0x28, ref = {num = 40, gen = 1}, cmd = 0x28 <Address 0x28 out of bounds>}}, {type = objNone, {booln = -1219323620, 
      intg = -1219323620, real = 1.4943066496036259e-268, string = 0xb752991c, name = 0xb752991c "he\027", array = 0xb752991c, 
      dict = 0xb752991c, stream = 0xb752991c, ref = {num = -1219323620, gen = 139705440}, cmd = 0xb752991c "he\027"}}, {type = objNone, {
      booln = -1234755020, intg = -1234755020, real = -2.0349244565020117e-42, string = 0xb6672234, name = 0xb6672234 "\b", 
      array = 0xb6672234, dict = 0xb6672234, stream = 0xb6672234, ref = {num = -1234755020, gen = -1220104018}, cmd = 0xb6672234 "\b"}}}
        numArgs = 0
        i = 6
        lastAbortCheck = 0
        timer = (GooTimer *) 0xb6672048
#7  0xb7422e68 in Gfx::display (this=0x83f96a0, obj=0xb6672234, topLevel=1) at Gfx.cc:557
        obj2 = {type = objNone, {booln = 139719632, intg = 139719632, real = 6.9030670220781298e-316, string = 0x853f3d0, 
    name = 0x853f3d0 "", array = 0x853f3d0, dict = 0x853f3d0, stream = 0x853f3d0, ref = {num = 139719632, gen = 0}, cmd = 0x853f3d0 ""}}
        i = <value optimized out>
#8  0xb7468046 in Page::display (this=0x84511f8, gfx=0x83f96a0) at Page.cc:446
        obj = {type = objStream, {booln = 139657936, intg = 139657936, real = -3.9892121781773595e-42, string = 0x85302d0, 
    name = 0x85302d0 "h\211R·\003", array = 0x85302d0, dict = 0x85302d0, stream = 0x85302d0, ref = {num = 139657936, gen = -1219084904}, 
    cmd = 0x85302d0 "h\211R·\003"}}
#9  0xb7553dfc in poppler_page_get_image_mapping (page=0x8445a28) at poppler-page.cc:1030
        map_list = <value optimized out>
        i = <value optimized out>
        __PRETTY_FUNCTION__ = "GList* poppler_page_get_image_mapping(PopplerPage*)"
#10 0x0809e7d6 in g_cclosure_marshal_VOID__ENUM () at gmarshal.c:334
No symbol table info available.
#11 0x080997ab in g_cclosure_marshal_VOID__ENUM () at gmarshal.c:334
No symbol table info available.
#12 0x0806185c in g_cclosure_marshal_VOID__ENUM () at gmarshal.c:334
No symbol table info available.
#13 0x0805fab3 in g_cclosure_marshal_VOID__ENUM () at gmarshal.c:334
No symbol table info available.
#14 0x0805ffec in g_cclosure_marshal_VOID__ENUM () at gmarshal.c:334
No symbol table info available.
#15 0xb6e243a4 in g_thread_create_proxy (data=0x81556b8) at gthread.c:635
        __PRETTY_FUNCTION__ = "g_thread_create_proxy"
#16 0xb7573462 in start_thread () from /lib/i686/libpthread.so.0
No symbol table info available.
#17 0xb6cfc82e in clone () from /lib/i686/libc.so.6
        __elf_set___libc_subfreeres_element_fstab_free__ = (const void *) 0xb6d3aa10
        fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {mnt_fsname = 0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, 
    mnt_freq = 0, mnt_passno = 0}, fs_ret = {fs_spec = 0x0, fs_file = 0x0, fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq = 0, 
    fs_passno = 0}}
Comment 3 Jeff Muizelaar 2007-10-03 10:55:15 UTC
I believe this may be related to the current cairo pattern not being set.
Comment 4 Jeff Muizelaar 2007-10-13 21:40:32 UTC
Should be fixed in git.

Thanks
Comment 5 Sebastien Bacher 2008-02-06 14:32:28 UTC
The current versions still display warnings
Comment 6 Konstantin A. Lepikhov 2008-03-15 08:37:24 UTC
Still get warnings with libcairo-1.4.14 and libpoppler-0.6.4.
Comment 7 Carlos Garcia Campos 2009-08-06 05:28:35 UTC
Both IN100_TD_2005_06.pdf and plan.pdf work for me with current poppler (and cairo from git master too) without any warning. Feel free to reopen it again if the problem is still present for you. Thanks. 

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.