High CPU / infinite loop in drawWorkPeriod() when working time contains 24:00 (PHP 8.4, Zabbix 7.0.27)

XMLWordPrintable

    • Type: Problem report
    • Resolution: Unresolved
    • Priority: Trivial
    • None
    • Affects Version/s: 7.0.27
    • Component/s: Frontend (F)
    • None
    • Environment:
      OS: Debian (frontend host)
      PHP: 8.4.21 (php-fpm)
      Extensions: gd enabled
      Timezone: Asia/Astana
      DB: postgresql 17.10-1.pgdg13+1
      Web server: nginx (php-fpm)

      Steps to reproduce:

      1. Set Zabbix working time to: 1-5,00:00-24:00
      2. Open any classic graph (chart2.php / frontend graph view)
      3. Observe PHP-FPM worker behavior (CPU)

      Result:
      PHP-FPM process immediately goes to 100% CPU
      Graph page never finishes loading
      Multiple slowlog entries show stuck execution in:
       CLineGraphDraw::drawWorkPeriod()
       find_period_start()
       find_period_end()
       DateTime

      Expected:{}

      Graph should render normally.

      Working time 24:00 should be interpreted safely as end-of-day boundary or normalized internally.

      No infinite loop should occur.

       

      Workaround:

      Changing "Working time" in Administration/General/GUI:

      from "1-5,00:00-24:00" to "1-5,00:00-23:59"

      resolves the issue completely.

       

      This issue appears after changes introduced in:

          ZBX-27441: fixed rendering of working days on graphs when only a single working day is defined

            Assignee:
            Zabbix Support Team
            Reporter:
            Miha
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: