PDA

View Full Version : Fatal error upgrading from 3.8.10 to 3.8.11


Orange20
05-13-2017, 01:08 PM
Hello all.

ref: https://www.vbulletin.com/forum/forum/vbulletin-3-8/vbulletin-3-8-questions-problems-and-troubleshooting/4369951-fatal-error-upgrading-from-3-8-10-to-3-8-11

I use 3.8.10 completely vanilla, no mods or addons. I'm receiving the following error on Step 4) Visitor Message IPv6 Updates when upgrading form 3.8.10 to 3.8.11.


"Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 608 bytes) in /PATH-REMOVED/class_core.php on line 1245"

Our PhP memory settings are fine, we're running 5.6.30 and MySQL 5.5.29, and our host had the following to say:

"I've created a test php script under the site which intentionally causes an out of memory error. When it is run, the following error is generated:

PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1073741825 bytes)

This is running out of memory at 1GB which indicates that the problems you are having during the VB update must be caused by VB setting the memory limit itself.

There are several places in the code that I can see the memory limit being checked/set, but I couldn't comment on which script it is that is causing this issue. You or your developer would need to investigate this further."

I've tested the upgrade on 3 diff. servers now, all varying configurations. On a local server here I upped all the memory allocations really high, as referenced in the sreenshot attached to this post. Still the same error message on Step 4) Visitor Message IPv6 Updates.

Something somewhere is overriding our memory limits. I've been using vBulletin since 2005 and never had a single problem upgrading. This is the first time I've encountered a problem and I'd really appreciate some advice.

Thanks very much in advance.

Paul M
05-13-2017, 02:37 PM
134217728 is 128M.

There are quite a few places that set the limit to 128M
However, they are all witten such that they should only do that if the current limit is less than 128M.

Basically like this ;


if (($memory_limit = ini_size_to_bytes(@ini_get('memory_limit'))) < 128 * 1024 * 1024 AND $memory_limit > 0)
{
@ini_set('memory_limit', 128 * 1024 * 1024);
}


So unless thats reporting some really odd low value, they should never kick in.

Orange20
05-13-2017, 03:35 PM
Paul M. Thank you very much for your comments. I have tested further and these are my results.

1 single machine.

PhP Max Post Size = 1.00 GB
PHP Maximum Upload Size = 1.00 GB
PHP Memory Limit = 1.00 GB
MySQL Packet Size = 512.00 MB

Upgrading from 3.8.10 to 4.2.5 = Success!
Upgrading from 3.8.10 to 3.8.11 = Fatal error: Allowed memory size of 134217728 bytes exhausted

3.8.10 to 4.2.5 skips 3.8.11 completely. Does this evidence suggest there may be an error with the upgrade coding in 3.8.11 ?

Paul M
05-13-2017, 10:31 PM
Not really, no.

You are running out of memory while the upgrade tries to run.
I can only guess that you have a huge number of visitor messages.

Even then, I cannot really see why you would run out of memory.
(Nor does it explain why your memory seems to be running out at 128M).

Orange20
05-14-2017, 11:02 AM
We do indeed have a very large forum. With pictures in the file system our database is around 7.2GB. We have around 200k threads and 7.3mil posts. There is nothing in our server config that would limit 128MB. As I mentioned we upped the limits. The limit is somehow being invoked within the VB code.

I'd really like to stick with 3.x rather than upgrading to 4.x. The error is generated when working on vbvisitormessage and vbipdata tables.

Can you offer any suggestions on how we can overcome this issue?

--------------- Added 1494805081 at 1494805081 ---------------

Paul M.

Please forgive the double-post.

I have successfully upgraded from 3.8.10 to 3.8.11 using our database on a test server following this process.

/includes/class_xml.php

Find:

ini_set('memory_limit', 128 * 1024 * 1024);

Replace with:

ini_set('memory_limit', '-1');

Thanks again for your advice. Your comments above about ini_set inspired this solution.

Do you think it OK to upgrade the live server in this way? If so, would it be sensible to revert the code changes once the upgrade has completed?

Paul M
05-15-2017, 12:55 PM
That change is perfectly fine to be left as is, you could equally just have commented it out.

I think I can see why it gets triggered, but there isnt anything that can be done about it now.

Orange20
05-15-2017, 05:01 PM
No worries Paul M.

Just curious, why were IP storage changes made?

Paul M
05-15-2017, 08:53 PM
For IPv6.