Bug #88451

Module Backend User, Filtering leads to Exception

Added by Florian Schuhmann 4 months ago. Updated 5 days ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
-
Target version:
-
Start date:
2019-05-28
Due date:
% Done:

0%

TYPO3 Version:
9
PHP Version:
7.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

I'm running a TYPO3 v9.5.7 with multiple Be-User Groups.

When I filter for some group in the backend in the module "Backend Users" and repeat this process 3 times, I get the following error message:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 31600640 bytes) in /var/www/html/typo3/public/typo3/sysext/core/Classes/Log/Writer/FileWriter.php on line 155

After some more debugging I come to the real origin:

"Data too long for column 'uc' at row 1" Doctrine\DBAL\Exception\DriverException

When I go to the User Settings and click to "Reset Configuration and Clear Temporary Data", I can repeat the filtering process 3 times until the error occurs again. If I do not do this, the error occurs every time I try to filter in the module.

Setting the UC in DB to null and load the module "Backend users" the uc blows up to 1,04kB.
After submit the filter form the first time the uc reaches 4,39 MB
After second submit the uc reaches 13,18 MB
The third submit then leads to the error.

2019-05-28_16h39_54.jpg View (57.2 KB) Florian Schuhmann, 2019-05-28 16:44

2019-06-04_15h07_35.jpg View (21.8 KB) Florian Schuhmann, 2019-06-04 15:07


Related issues

Related to TYPO3 Core - Bug #88245: Group filter in backend user module throws an exception Closed 2019-04-29
Related to TYPO3 Core - Bug #86361: Filtering for a Backend User Group leads to an Exception in the Backend User Module Resolved 2018-09-24

History

#1 Updated by Frank Naegler 4 months ago

  • Status changed from New to Needs Feedback
  • Assignee set to Frank Naegler

I am still unable to reproduce the problem.
The UC filed in DB is of type MEDIUMBLOB, which means 16MB size.
The massive increase in your case is a bit weird, because in my instances with a small amount of BE user groups and a system with 200 groups, the size not change.
In my case the UC filed contains ~15.000 bytes.

I guess it is something else, maybe an extension which produce the problem.
Is it possible that you check the content of the first, second and third change and create a diff?

#2 Updated by Florian Schuhmann 3 months ago

After some debugging i see reflection informations and warnings in the uc like the following:

Returns the specified configuration.
 The actual configuration will be merged from different sources in a defined order.

 You can get the following types of configuration invoking:
 CONFIGURATION_TYPE_SETTINGS: Extbase settings
 CONFIGURATION_TYPE_FRAMEWORK: the current module/plugin settings
 CONFIGURATION_TYPE_FULL_TYPOSCRIPT: a raw TS array

 Note that this is a low level method and only makes sense to be used by Extbase internally.

or

subGroups";O:55:"TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage":13:{s:64:" TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage warning";s:240:"You should never see this warning. If you do, you probably used PHP array functions like current() on the TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage. To retrieve the first result, you can use the rewind() and current() methods.";s:13:" * dataMapper";
s:46:" TYPO3\CMS\Extbase\Reflection\ClassSchema tags";a:1:{s:8:"internal";a:1:{i:0;s:59:"only to be used within Extbase, not part of TYPO3 Core API.";}}s:58:" TYPO3\CMS\Extbase\Reflection\ClassSchema injectProperties";a:0:{}s:55:" TYPO3\CMS\Extbase\Reflection\ClassSchema injectMethods" 
{i:0;s:35:"http://forge.typo3.org/issues/36820";}s:6:"return";a:1:{i:0;s:46:"array Names of the properties to be serialized";}s:8:"internal";a:1:{i:0;s:59:"only to be used within Extbase, not part of TYPO3 Core API.";}}s:11:"annotations";a:0:{}s:8:"isAction";b:0;s:11:"description";s:388:"Serialization (sleep) helper.

 Removes properties of this object from serialization.
 This action is necessary, since there might be closures used
 in the accordant content objects (e.g. in FLUIDTEMPLATE) which
 cannot be serialized. It's fine to reset $this->contentObjects
 since elements will be recreated and are just a local cache,
 but not required for runtime logic and behaviour.";

Finally, the TSFE controller with TypoScript etc. is included
s:17:"includeGroupArray";a:0:{}s:14:" * TSdataArray";a:4:{i:0;s:1297:"options.enableBookmarks=1
            options.file_list.enableDisplayBigControlPanel=selectable
            options.file_list.enableDisplayThumbnails=selectable
            options.file_list.enableClipBoard=selectable
            options.file_list.thumbnail {
                width = 64
                height = 64
            }
            options.pageTree {
                doktypesToShowInNewPageDragArea = 1,6,4,7,3,254,255,199
            }

            options.contextMenu {
                table {
                    pages {
                        disableItems =
                        tree.disableItems =
                    }
                    sys_file {
                        disableItems =
                        tree.disableItems =
                    }
                    sys_filemounts {
                        disableItems =
                        tree.disableItems =
                    }
                }
            }

[GLOBAL]

    options.saveDocView = 1
    options.saveDocNew = 1
    options.saveDocNew.pages = 0
    options.saveDocNew.sys_file = 0
    options.saveDocNew.sys_file_metadata = 0
    options.disableDelete.sys_file = 1

[GLOBAL]

    options.saveDocNew.tx_gridelements_backend_layout=1

[GLOBAL]
options.pageTree.doktypesToShowInNewPageDragArea := addToList(142)";i:1;s:23:"admPanel.enable.all = 1";i:2;s:137:" 
                            // Setting defaults for sys_note author / email...
                        TCAdefaults.sys_note.author =
                        TCAdefaults.sys_note.email =
                    ";i:3;N;}s:14:" * userTS_text";s:1487:"options.enableBookmarks=1
            options.file_list.enableDisplayBigControlPanel=selectable
            options.file_list.enableDisplayThumbnails=selectable
            options.file_list.enableClipBoard=selectable
            options.file_list.thumbnail {
                width = 64
                height = 64
            }
            options.pageTree {
                doktypesToShowInNewPageDragArea = 1,6,4,7,3,254,255,199
            }

            options.contextMenu {
                table {
                    pages {
                        disableItems =
                        tree.disableItems =
                    }
                    sys_file {
                        disableItems =
                        tree.disableItems =
                    }
                    sys_filemounts {
                        disableItems =
                        tree.disableItems =
                    }
                }
            }

[GLOBAL]

    options.saveDocView = 1
    options.saveDocNew = 1
    options.saveDocNew.pages = 0
    options.saveDocNew.sys_file = 0
    options.saveDocNew.sys_file_metadata = 0
    options.disableDelete.sys_file = 1

[GLOBAL]

    options.saveDocNew.tx_gridelements_backend_layout=1

[GLOBAL]
options.pageTree.doktypesToShowInNewPageDragArea := addToList(142)
[GLOBAL]
admPanel.enable.all = 1
[GLOBAL]

                            // Setting defaults for sys_note author / email...
                        TCAdefaults.sys_note.author =
                        TCAdefaults.sys_note.email =

[GLOBAL]
";

The hole serialized array contains a lot of those messages.

If I remove the subgroup relation between the groups, then the uc-field does not inflate.
Here are the relations shown:

I can't see a problem within it (e.g. no cycles or something else).

#3 Updated by Florian Schuhmann 3 months ago

Currently I can restrict it to the workspace groups. For this you need the following group setup:

[WS] LIVE
    > workspace_perms = 1
[META] Lead Editor
    > workspace_perms = 0
    > subgroup = [WS] LIVE

Same phenomenon with the following setup:

[ACL] Workspaces
    > groupMods = web_WorkspacesWorkspaces
    > workspace_perms = 0
[META] Lead Editor
    > workspace_perms = 0
    > subgroup = [ACL] Workspaces

Or with this setup:

[WS] EDIT workspace (Member)
    > workspace_perms = 0
    > nothing set in this group. This group is only linked in the defined workspace as member. Same as this group is linked as adminusers in the workspace.
[META] Lead Editor
    > workspace_perms = 0
    > subgroup = [WS] EDIT workspace (Member)

If you filters for [META] Lead Editor with one of the above described setups, the uc field inflates. But if you filter for one of the specific workspace groups above, nothing happens.
So something within workspaces leads to this bug.

#4 Updated by Wolfangel Cyril 3 months ago

  • PHP Version set to 7.2

we're reproducing the bug here, with the same TYPO3 Version, we can filter once after reseting data, then, "An exception occured while executing "UPDATE" 'be_users'' SET ''uc'' = ? WHERE 'uid'' = ?''

#5 Updated by Dima Doronenko 3 months ago

  • PHP Version changed from 7.2 to 7.3
I also have such an issue and can reproduce it.
Environment info:
  • TYPO3 v9.5.7
  • PHP 7.3.2
  • MySQL 5.7.22

On 2-3rd time of filtering I get "An exception occured while executing "UPDATE" 'be_users' SET 'uc' = ? WHERE 'uid' = ?....."

#6 Updated by Dima Doronenko 3 months ago

  • PHP Version changed from 7.3 to 7.2

#7 Updated by Konrad Michalik about 2 months ago

We're having the same problem while filtering the be users. Any updates so far?

Uncaught TYPO3 Exception: An exception occurred while executing 'UPDATE `be_users` SET `uc` = ? WHERE `uid` = ?' with params [...]
  • TYPO3 v9.5.8
  • PHP 7.2.20
  • MariaDB 10.1.38

#8 Updated by Frank Naegler 28 days ago

  • Status changed from Needs Feedback to Accepted

#9 Updated by Florian Schuhmann 28 days ago

is it possibly a related issue to: https://forge.typo3.org/issues/86361
which was fixed in 9.5.9?

#10 Updated by Florian Schuhmann 28 days ago

#11 Updated by Riccardo De Contardi 5 days ago

  • Related to Bug #88245: Group filter in backend user module throws an exception added

#12 Updated by Riccardo De Contardi 5 days ago

  • Related to Bug #86361: Filtering for a Backend User Group leads to an Exception in the Backend User Module added

#13 Updated by Riccardo De Contardi 5 days ago

  • Status changed from Accepted to Closed
  • Assignee deleted (Frank Naegler)

@Florian Schuhmann thank you for your feedback;

I close this issue as solved with #86361; If you think that this is the wrong decision or experience the issue again, please reopen it or ping me.

Thank you and best regards.

Also available in: Atom PDF