Menu

#3519 (ok 4.0) Infinite recursion on PDF export

Latest_Git
fixed
5
2014-08-13
2012-02-14
No

FastCGI-stderr: PHP Fatal error: Maximum function nesting level of '100' reached, aborting! in libraries/tcpdf/tcpdf.php on line 25145
PHP Stack trace:
PHP 1. {main}() export.php:0
PHP 2. PMA_exportData() export.php:467
PHP 3. PMA_Export_PDF->mysql_report() libraries/export/pdf.php:449
PHP 4. TCPDF->AddPage() libraries/export/pdf.php:337
PHP 5. TCPDF->startPage() libraries/tcpdf/tcpdf.php:3899
PHP 6. TCPDF->setHeader() libraries/tcpdf/tcpdf.php:3987
PHP 7. PMA_Export_PDF->Header() libraries/tcpdf/tcpdf.php:4301
PHP 8. TCPDF->MultiCell() libraries/export/pdf.php:104
PHP 9. TCPDF->Write() libraries/tcpdf/tcpdf.php:6419
PHP 10. TCPDF->Cell() libraries/tcpdf/tcpdf.php:7069
PHP 11. PMA_Export_PDF->checkPageBreak() libraries/tcpdf/tcpdf.php:5672
PHP 12. TCPDF->AddPage() libraries/export/pdf.php:55
PHP 13. TCPDF->startPage() libraries/tcpdf/tcpdf.php:3899
PHP 14. TCPDF->setHeader() libraries/tcpdf/tcpdf.php:3987
PHP 15. PMA_Export_PDF->Header() libraries/tcpdf/tcpdf.php:4301
PHP 16. TCPDF->MultiCell() libraries/export/pdf.php:104
PHP 17. TCPDF->Write() libraries/tcpdf/tcpdf.php:6419
PHP 18. TCPDF->Cell() libraries/tcpdf/tcpdf.php:7069
PHP 19. PMA_Export_PDF->checkP
...
PHP 84. TCPDF->AddPage() libraries/export/pdf.php:55
PHP 85. TCPDF->startPage() libraries/tcpdf/tcpdf.php:3899
PHP 86. TCPDF->setHeader() libraries/tcpdf/tcpdf.php:3987
PHP 87. PMA_Export_PDF->Header() libraries/tcpdf/tcpdf.php:4301
PHP 88. TCPDF->MultiCell() libraries/export/pdf.php:104
PHP 89. TCPDF->Write() libraries/tcpdf/tcpdf.php:6419
PHP 90. TCPDF->Cell() libraries/tcpdf/tcpdf.php:7069
PHP 91. PMA_Export_PDF->checkPageBreak() libraries/tcpdf/tcpdf.php:5672
PHP 92. TCPDF->AddPage() libraries/export/pdf.php:55
PHP 93. TCPDF->endPage() libraries/tcpdf/tcpdf.php:3897
PHP 94. TCPDF->setFooter() libraries/tcpdf/tcpdf.php:3915
PHP 95. TCPDF->setGraphicVars() libraries/tcpdf/tcpdf.php:4330
PHP 96. TCPDF->SetFont() libraries/tcpdf/tcpdf.php:25018
PHP 97. TCPDF->SetFontSize() libraries/tcpdf/tcpdf.php:5242
PHP 98. TCPDF->_out() libraries/tcpdf/tcpdf.php:5283
PHP 99. TCPDF->setPageBuffer() libraries/tcpdf/tcpdf.php:13030

Seen on demo server on current master, I have no clue how to trigger this.

Discussion

  • Michal Čihař

    Michal Čihař - 2012-02-20

    This can be reproduced when export headings won't fit on page (leading to loop: add new page -> add headings -> add new page ...). For example:

    CREATE TABLE IF NOT EXISTS `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww` (
    `sdafasdf_sdafasdf_sdafasdf_sdafasdf_sdafasdf_sdafasdf_sdafasdf_s` int(11) NOT NULL,
    `fasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww0` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww2` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww4` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww5` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww6` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww7` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww8` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww9` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww20` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww21` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww22` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww23` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww24` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww25` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww26` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww27` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww28` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww29` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww30` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww31` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww32` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww33` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww34` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww35` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww39` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww36` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww37` int(11) NOT NULL,
    `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww38` int(11) NOT NULL
    );

     
  • Marc Delisle

    Marc Delisle - 2012-02-21

    Michal,
    I cannot reproduce this on a test server running Apache, mod_php (and no Suhosin).

     
  • Marc Delisle

    Marc Delisle - 2012-02-21

    Michal,
    maybe this comes from php.ini's xdebug.max_nesting_level which is set to 100?

     
  • Michal Čihař

    Michal Čihař - 2012-02-23

    Yes it is, but the code is obviously looping infinitely, so it's good it got catch.

    Anyway I'm not 100% sure about testcase I've provided, I just thinks it would end up same.

     
  • Michal Čihař

    Michal Čihař - 2013-02-07
    • summary: Infinite recursion on PDF export --> (ok 4.0) Infinite recursion on PDF export
    • status: open --> open-fixed
    • assigned_to: Michal Čihař
     
  • Michal Čihař

    Michal Čihař - 2013-02-07

    Fixed in git.

     
  • Marc Delisle

    Marc Delisle - 2013-05-03
    • Status: open-fixed --> closed-fixed
     
  • Michal Čihař

    Michal Čihař - 2013-06-11
    • Status: closed-fixed --> fixed