Bug 106112 - recursive xref loop
Summary: recursive xref loop
Status: RESOLVED MOVED
Alias: None
Product: poppler
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: poppler-bugs
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-17 22:34 UTC by pdknsk
Modified: 2018-08-21 11:05 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
PDF (99 bytes, application/pdf)
2018-04-17 22:35 UTC, pdknsk
Details

Description pdknsk 2018-04-17 22:34:43 UTC
This hit a timeout.

    #20 0x67474d in XRef::fetch(int, int, int) poppler/poppler/XRef.cc:1175:26
    #21 0x66d9ac in Object::fetch(XRef*, int) const poppler/poppler/Object.cc:125:16
    #22 0x67006a in Dict::lookup(char const*, int) const poppler/poppler/Dict.cc:260:35
    #23 0x686193 in Stream::addFilters(Dict*, int) poppler/poppler/Stream.cc:182:17
    #24 0x6d581c in Parser::makeStream(Object&&, unsigned char*, CryptAlgorithm, int, int, int, int, bool) poppler/poppler/Parser.cc:272:14
    #25 0x6d4978 in Parser::getObj(bool, unsigned char*, CryptAlgorithm, int, int, int, int, bool) poppler/poppler/Parser.cc:138:34
    #26 0x67474d in XRef::fetch(int, int, int) poppler/poppler/XRef.cc:1175:26
    #27 0x66d9ac in Object::fetch(XRef*, int) const poppler/poppler/Object.cc:125:16
    #28 0x67006a in Dict::lookup(char const*, int) const poppler/poppler/Dict.cc:260:35
    #29 0x686193 in Stream::addFilters(Dict*, int) poppler/poppler/Stream.cc:182:17
    #30 0x6d581c in Parser::makeStream(Object&&, unsigned char*, CryptAlgorithm, int, int, int, int, bool) poppler/poppler/Parser.cc:272:14
    #31 0x6d4978 in Parser::getObj(bool, unsigned char*, CryptAlgorithm, int, int, int, int, bool) poppler/poppler/Parser.cc:138:34
    #32 0x6d4522 in Parser::getObj(bool, unsigned char*, CryptAlgorithm, int, int, int, int, bool) poppler/poppler/Parser.cc:95:21
    #33 0x6d467b in Parser::getObj(bool, unsigned char*, CryptAlgorithm, int, int, int, int, bool) poppler/poppler/Parser.cc:123:16
    #34 0x67474d in XRef::fetch(int, int, int) poppler/poppler/XRef.cc:1175:26

I expected a stack-overflow, but even after manually running for a few minutes it didn't occur.
Comment 1 pdknsk 2018-04-17 22:35:25 UTC
Created attachment 138889 [details]
PDF
Comment 2 pdknsk 2018-04-18 16:32:35 UTC
There appears to be some recursion multiplication here. Setting recursionLimit to 20 (from 500) in Parser.cc makes it run less than a second, with increasing values increasing runtime exponentially.
Comment 3 GitLab Migration User 2018-08-21 11:05:07 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/poppler/poppler/issues/509.


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.