[fixed ]after SNAT Migration: PHP Fatal error: Allowed memory size of 10737418

Started by c-mu, Today at 10:04:15 AM

Previous topic - Next topic
Hi,
I just updated to the latest OPNsense 26.7.1_1-amd64 and migrated my firewall and NAT Rules.

I didn't get any errors while the migration process, but after the old rules were deleted i noticed two errors:

first: i cant choose the NAT Mode any more. It's empty and "nothing selected". See attached screenshot.

seconed: when I open the SNAT Page, an Crash Report error Log is generated:

QuotePHP Errors:

[06-Aug-2026 09:56:50 Europe/Berlin] PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes) in /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php on line 157
Stack trace:
#0 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php(170): OPNsense\Base\FieldTypes\BaseListField->getNodeOptions()
#1 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(739): OPNsense\Base\FieldTypes\BaseListField->getNodeData()
#2 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#3 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#4 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#5 /usr/local/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php(551): OPNsense\Base\FieldTypes\BaseField->getNodes()
#6 /usr/local/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php(220): OPNsense\Base\BaseModel->getNodes()
#7 /usr/local/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php(208): OPNsense\Base\ApiMutableModelControllerBase->getModelNodes()
#8 /usr/local/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/SourceNatController.php(57): OPNsense\Base\ApiMutableModelControllerBase->getAction()
#9 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Dispatcher.php(166): OPNsense\Firewall\Api\SourceNatController->getAction()
#10 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Router.php(156): OPNsense\Mvc\Dispatcher->dispatch(Object(OPNsense\Mvc\Request), Object(OPNsense\Mvc\Response), Object(OPNsense\Mvc\Session))
#11 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Router.php(139): OPNsense\Mvc\Router->performRequest(Object(OPNsense\Mvc\Dispatcher))
#12 /usr/local/opnsense/www/api.php(38): OPNsense\Mvc\Router->routeRequest('/api/firewall/s...', Array)
#13 {main}
[06-Aug-2026 09:56:56 Europe/Berlin] PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes) in /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php on line 157
Stack trace:
#0 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php(170): OPNsense\Base\FieldTypes\BaseListField->getNodeOptions()
#1 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php(209): OPNsense\Base\FieldTypes\BaseListField->getNodeData()
#2 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(739): OPNsense\Base\FieldTypes\ModelRelationField->getNodeData()
#3 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#4 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#5 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#6 /usr/local/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php(551): OPNsense\Base\FieldTypes\BaseField->getNodes()
#7 /usr/local/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php(220): OPNsense\Base\BaseModel->getNodes()
#8 /usr/local/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php(208): OPNsense\Base\ApiMutableModelControllerBase->getModelNodes()
#9 /usr/local/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/SourceNatController.php(57): OPNsense\Base\ApiMutableModelControllerBase->getAction()
#10 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Dispatcher.php(166): OPNsense\Firewall\Api\SourceNatController->getAction()
#11 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Router.php(156): OPNsense\Mvc\Dispatcher->dispatch(Object(OPNsense\Mvc\Request), Object(OPNsense\Mvc\Response), Object(OPNsense\Mvc\Session))
#12 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Router.php(139): OPNsense\Mvc\Router->performRequest(Object(OPNsense\Mvc\Dispatcher))
#13 /usr/local/opnsense/www/api.php(38): OPNsense\Mvc\Router->routeRequest('/api/firewall/s...', Array)
#14 {main}
[06-Aug-2026 10:00:01 Europe/Berlin] PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes) in /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php on line 159
Stack trace:
#0 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php(170): OPNsense\Base\FieldTypes\BaseListField->getNodeOptions()
#1 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(739): OPNsense\Base\FieldTypes\BaseListField->getNodeData()
#2 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#3 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#4 /usr/local/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php(737): OPNsense\Base\FieldTypes\BaseField->getNodes()
#5 /usr/local/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php(551): OPNsense\Base\FieldTypes\BaseField->getNodes()
#6 /usr/local/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php(220): OPNsense\Base\BaseModel->getNodes()
#7 /usr/local/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php(208): OPNsense\Base\ApiMutableModelControllerBase->getModelNodes()
#8 /usr/local/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/SourceNatController.php(57): OPNsense\Base\ApiMutableModelControllerBase->getAction()
#9 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Dispatcher.php(166): OPNsense\Firewall\Api\SourceNatController->getAction()
#10 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Router.php(156): OPNsense\Mvc\Dispatcher->dispatch(Object(OPNsense\Mvc\Request), Object(OPNsense\Mvc\Response), Object(OPNsense\Mvc\Session))
#11 /usr/local/opnsense/mvc/app/library/OPNsense/Mvc/Router.php(139): OPNsense\Mvc\Router->performRequest(Object(OPNsense\Mvc\Dispatcher))
#12 /usr/local/opnsense/www/api.php(38): OPNsense\Mvc\Router->routeRequest('/api/firewall/s...', Array)
#13 {main}

I asked the AI and there seems to be a relation between the empty NAT Mode and the php error.

Any Idea to solve this?

Hello, can you try the following patch:

opnsense-patch https://github.com/opnsense/core/commit/979ff9e
If you don't know how to install the patch:
- Open a Shell (e.g. via SSH, terminal...)
- log in as root
- Select 8
- Enter the above patch command without the "#"
- If you want to revert the patch just execute the same command again.
Hardware:
DEC740

Thank you, that worked! Will it be implemented in the upcoming version?

Nice, I'll push it to master then. Yeah it will most likely be in the next version the next week.

Thanks for testing.

Backlink: https://github.com/opnsense/core/pull/10674
Hardware:
DEC740