My occasional error



  • switching from E_Notice to warning didn't help generate any more data

    amd64
    10.3-RELEASE
    FreeBSD 10.3-RELEASE #23 3322893(RELENG_2_3): Sun Apr 24 01:45:24 CDT 2016    root@ce23-amd64-builder:/builder/pfsense/tmp/obj/builder/pfsense/tmp/FreeBSD-src/sys/pfSense

    Crash report details:

    PHP Errors:
    [24-Apr-2016 20:15:01 Etc/UTC] PHP Stack trace:
    [24-Apr-2016 20:15:01 Etc/UTC] PHP  1. {main}() /usr/local/www/widgets/widgets/snort_alerts.widget.php:0
    [24-Apr-2016 20:15:01 Etc/UTC] PHP  2. require_once() /usr/local/www/widgets/widgets/snort_alerts.widget.php:32
    [24-Apr-2016 20:15:01 Etc/UTC] PHP  3. get_configured_interface_with_descr() /usr/local/www/guiconfig.inc:254

    Filename: /var/crash/minfree
    2048



  • Are those the only lines in the crash dump?  There certainly is not very much helpful info in those lines.

    Do you currently have Snort installed and does it have configured interfaces?

    Bill



  • yes I do have snort installed with 3 interfaces and yes this has not ever given more info



  • PHP is not liking something coming from the function get_configured_interface_with_descr() in the system file guiconfig.inc.  That function simply enumerates your configured firewall interfaces and returns them in an array.  The array includes the interface description text.

    My first guess would be perhaps a character in the interface description text is tripping up the function.  What language is your firewall configured for (English, or another language with perhaps some different characters)?  Do you have any unusual punctuation in your interface description text such as quotes or an apostrophe maybe?

    Bill



  • English
    and name are all plain jane no punctuation



  • @grandrivers:

    English
    and name are all plain jane no punctuation

    Hmm…the sparse error message may make this hard to find.  I have not see the error in my test virtual machines, and I don't know of any other posts here with the same problem (at least not yet).  Have you tried removing the Snort widget from the Dashboard and then adding it back?  Don't really know if that help, but it can't hurt to test.

    If that does not help, post back and we can proceed with more in-depth troubleshooting.

    Bill



  • This happens infrequently to a number of people, but we have not found the common factor yet.
    Examples:
    https://forum.pfsense.org/index.php?topic=105760.0
    https://forum.pfsense.org/index.php?topic=109922.0
    and threads pointed to in those…



  • @phil.davis:

    This happens infrequently to a number of people, but we have not found the common factor yet.
    Examples:
    https://forum.pfsense.org/index.php?topic=105760.0
    https://forum.pfsense.org/index.php?topic=109922.0
    and threads pointed to in those…

    Thanks Phil for the additional information.  It appears this is maybe something going on in the overall widget code or perhaps more specifically with one of the system functions rather than being a problem with any single widget individually.  Could also be something within PHP itself, I guess.

    Bill



  • Its probably a php 'warning', can you check the contents of the /tmp/php_errors.log ? It should have the actual warning included. The 'partial' php error message is caused by a warning-filter https://redmine.pfsense.org/issues/6097



  • /tmp/php_errors.log and /tmp/php_errors.txt are both empty



  • You do still have that 'crashreport' on the dashboard screen? If that is deleted then i think the logs are cleared as well.



  • oh ok my bad didnt think about it that way



  • @PiBa:

    Its probably a php 'warning', can you check the contents of the /tmp/php_errors.log ? It should have the actual warning included. The 'partial' php error message is caused by a warning-filter https://redmine.pfsense.org/issues/6097

    Ah! So that is the reason they are not shown.

    Based on your input I think a recommended change would be (in beginning of the command):

    /usr/bin/grep -vi warning /tmp/PHP_errors.log
    

    To:

    /bin/cat /tmp/PHP_errors.log
    

    On /usr/local/www/index.php and /usr/local/www/crash_reporter.php



  • php_errors.log
    [01-May-2016 03:15:01 Etc/UTC] PHP Warning:  Invalid argument supplied for foreach() in /etc/inc/util.inc on line 1410
    [01-May-2016 03:15:01 Etc/UTC] PHP Stack trace:
    [01-May-2016 03:15:01 Etc/UTC] PHP  1. {main}() /usr/local/www/ifstats.php:0
    [01-May-2016 03:15:01 Etc/UTC] PHP  2. require_once() /usr/local/www/ifstats.php:63
    [01-May-2016 03:15:01 Etc/UTC] PHP  3. get_configured_interface_with_descr() /usr/local/www/guiconfig.inc:254
    [01-May-2016 10:15:00 Etc/UTC] PHP Warning:  Invalid argument supplied for foreach() in /etc/inc/util.inc on line 1410
    [01-May-2016 10:15:00 Etc/UTC] PHP Stack trace:
    [01-May-2016 10:15:00 Etc/UTC] PHP  1. {main}() /usr/local/www/widgets/widgets/installed_packages.widget.php:0
    [01-May-2016 10:15:00 Etc/UTC] PHP  2. require_once() /usr/local/www/widgets/widgets/installed_packages.widget.php:63
    [01-May-2016 10:15:00 Etc/UTC] PHP  3. get_configured_interface_with_descr() /usr/local/www/guiconfig.inc:254



  • That is weird. The code is a foreach over all the interfaces:

    foreach ($config['interfaces'] as $if => $ifdetail) {

    It could have an "if is_array()" to protect it - that will stop those warning messages - but actually $config['interfaces'] MUST always have at least 1 interface in it. So something is going wrong with the global $config



  • @phil.davis:

    That is weird. The code is a foreach over all the interfaces:

    foreach ($config['interfaces'] as $if => $ifdetail) {

    It could have an "if is_array()" to protect it - that will stop those warning messages - but actually $config['interfaces'] MUST always have at least 1 interface in it. So something is going wrong with the global $config

    Exactly what I was thinking.

    IMO, the only way for that to ever happen is config.cache to be corrupted for whatever reason, so I've submitted the following PR:
    https://github.com/pfsense/pfsense/pull/2925

    Additionally, with regards to truncation of crash report, I've submitted another PR:
    https://github.com/pfsense/pfsense/pull/2922