Resolved

Reported for: WPML Multilingual CMS 3.1.7.2

Symptoms

A white page, or one of these errors might be displayed when taking different type of actions, or showing some pages in the front-end:

  • Fatal error: Maximum function nesting level of '100' reached, aborting!
  • Fatal error: Allowed memory size of xxxxxx bytes exhausted

In some (rare and very specific) configurations, WPML code gets into an infinite loop. This loop will run forever and eat up memory until it reaches the maximum allocated PHP memory limit. You may be experiencing this if your server’s memory limit is very high and it’s still exhausted.

Please note that in 99.5% of the cases, memory overflows indicate to too-low memory limits on PHP. This bug is triggered on very rare cases. Most reports about memory overflow are resolved by simply increasing the amount of allowed memory.

If your server’s memory is set to very high and it still runs out, you can apply the patch suggested here. Please note that this requires editing a file in WPML. We will be releasing a beta version soon, which resolved this and other problems.

Workaround

This fix is based on version 2.0.9.1 of WPML String Translation.
We recommend to wait for the next plugin update, but if you need to a quick fix and you have enough skills to edit the plugin files, please follow these directions:

  • Open the file *wp-content/plugins/wpml-string-translation/inc/functions.php*.
  • In line 2940, replace this:
    WPML_Config::load_config_run();
    With that:
    remove_action('update_option', 'update_option_to_translate_string', 5);
    WPML_Config::load_config_run();
    add_action('update_option', 'update_option_to_translate_string', 5, 3);
  • Save