How to reproduce
- Use Excimer to profile any PHP execution large enough to produce at least two records.
- Use formatCollapsed() to produce a single string profile, and output it to a file.
- Examine the file to see the extra semi-colons.
An extra semi-colon is prepended to each line. When submitted to flamegraph, it results in skewed images.
example
/var/www/excimer/admin/search.php;moodle_needs_upgrading;core_component::get_all_versions_hash;core_component::get_all_versions;core_component::fetch_plugins 1 ;/var/www/excimer/admin/search.php;admin_externalpage_setup;admin_get_root;/var/www/excimer/admin/settings/plugins.php;admin_category::add;admin_category::locate 1 ;/var/www/excimer/admin/search.php;admin_externalpage_setup;moodle_page::__get;moodle_page::magic_get_settingsnav;settings_navigation::initialise;settings_navigation::load_administration_settings;settings_navigation::load_administration_settings;settings_navigation::load_administration_settings;settings_navigation::load_administration_settings;settings_navigation::load_administration_settings;admin_settingpage::check_access;has_capability 1 ;/var/www/excimer/admin/search.php;admin_get_root;/var/www/excimer/admin/settings/plugins.php;core\plugininfo\auth::load_settings;/var/www/excimer/auth/cas/settings.php;display_auth_lock_options;admin_setting_configselect::__construct 1 ;/var/www/excimer/admin/search.php;admin_get_root;/var/www/excimer/admin/settings/plugins.php;lang_string::__construct;core_string_manager_standard::string_exists;core_string_manager_standard::load_component_strings;core_component::normalize_component 1
There should be no semi-colons at the beginning of each line.
Bug occurs in version: 1.0.2
An examination of the source code shows the problem occurs on line 315 of excimer_log.c.
if (excimer_log_smart_str_get_len(&buf) != 0) { smart_str_appends(&buf, ";"); }
Because buf is empty only at the very beginning of the function, it will cause a semi-colon to be appended at the start of each line.
This flaw was also found in the master branch.
Thank you for your consideration.
Regards, Jason