[#7420] Infinite recursion when renaming sentmail folders
Summary Infinite recursion when renaming sentmail folders
Queue IMP
Queue Version FRAMEWORK_3
Type Bug
State Resolved
Priority 1. Low
Owners Michael Slusarz <slusarz (at) horde (dot) org>
Requester Jan Schneider <jan (at) horde (dot) org>
Created 10/01/2008 (276 days ago)
Due
Updated 12/01/2008 (215 days ago)
Assigned 10/19/2008 (258 days ago)
Resolved 12/01/2008 (215 days ago)
Attachments tree.patch Download
Milestone
Patch No

History
12/01/2008 Jan Schneider Comment #9
State ⇒ Resolved
Reply to this comment
That did it.
12/01/2008 CVS Commit Comment #8 Reply to this comment
11/06/2008 Michael Slusarz Comment #7
New Attachment: tree.patch Download
Reply to this comment
Nothing theoretically wrong with that code - my guess is you have a 
bunch of unsubscribed messages in a row.  So here's a pretty lame 
patch that adds overhead by removing the potential recursive call.   
Let me know if this helps.
11/01/2008 Jan Schneider Comment #6 Reply to this comment
More findings:
- it is an xdebug setting
- it happens each time I rename a folder
- it doesn't happen if raise that limit to 200
11/01/2008 Jan Schneider Comment #5 Reply to this comment
And one really weird side effect is, that the initial_page (or 
initial_view?) is reset to the default after this.
11/01/2008 Jan Schneider Comment #4 Reply to this comment
By the way, this also happens on each subsequent access to IMP, until 
I logout. With variations, like:


( ! ) Fatal error: Maximum function nesting level of '100' reached, 
aborting! in /srv/www/htdocs/horde/imp/lib/IMAP/Tree.php on line 1445
Call Stack
#        Time        Memory        Function        Location
1        0.0089        377192        {main}( )        ../mailbox.php:0
2        0.3637        6605408        imp::flistselect( )        ../mailbox.php:225
3        0.3675        6758200        imp_folder->flist_imp( )        ../IMP.php:478
4        0.3677        6758312        imp_folder->flist( )        ../Folder.php:146
5        0.3890        7604792        imp_tree->folderlist( )        ../Folder.php:105
6        0.4152        7628312        imp_tree->next( )        ../Tree.php:1748
7        0.4154        7628312        imp_tree->next( )        ../Tree.php:618
8        0.4155        7628312        imp_tree->next( )        ../Tree.php:618
9        0.4156        7628312        imp_tree->next( )        ../Tree.php:618
10        0.4157        7628344        imp_tree->next( )        ../Tree.php:618
11        0.4158        7628376        imp_tree->next( )        ../Tree.php:618
12        0.4159        7628816        imp_tree->next( )        ../Tree.php:618
13        0.4160        7629336        imp_tree->next( )        ../Tree.php:618
14        0.4161        7629872        imp_tree->next( )        ../Tree.php:618
15        0.4162        7630408        imp_tree->next( )        ../Tree.php:618
16        0.4163        7630944        imp_tree->next( )        ../Tree.php:618
17        0.4164        7631480        imp_tree->next( )        ../Tree.php:618
18        0.4165        7632016        imp_tree->next( )        ../Tree.php:618
19        0.4166        7632552        imp_tree->next( )        ../Tree.php:618
20        0.4167        7633088        imp_tree->next( )        ../Tree.php:618
21        0.4168        7633624        imp_tree->next( )        ../Tree.php:618
22        0.4169        7634160        imp_tree->next( )        ../Tree.php:618
23        0.4170        7634696        imp_tree->next( )        ../Tree.php:618
24        0.4171        7635288        imp_tree->next( )        ../Tree.php:618
25        0.4173        7635960        imp_tree->next( )        ../Tree.php:618
26        0.4174        7636632        imp_tree->next( )        ../Tree.php:618
27        0.4175        7637304        imp_tree->next( )        ../Tree.php:618
28        0.4176        7637976        imp_tree->next( )        ../Tree.php:618
29        0.4177        7638648        imp_tree->next( )        ../Tree.php:618
30        0.4178        7639320        imp_tree->next( )        ../Tree.php:618
31        0.4179        7639992        imp_tree->next( )        ../Tree.php:618
32        0.4180        7640664        imp_tree->next( )        ../Tree.php:618
33        0.4181        7641336        imp_tree->next( )        ../Tree.php:618
34        0.4182        7642008        imp_tree->next( )        ../Tree.php:618
35        0.4183        7642680        imp_tree->next( )        ../Tree.php:618
36        0.4184        7643352        imp_tree->next( )        ../Tree.php:618
37        0.4185        7644024        imp_tree->next( )        ../Tree.php:618
38        0.4186        7644696        imp_tree->next( )        ../Tree.php:618
39        0.4188        7645368        imp_tree->next( )        ../Tree.php:618
40        0.4189        7646040        imp_tree->next( )        ../Tree.php:618
41        0.4190        7647232        imp_tree->next( )        ../Tree.php:618
42        0.4191        7647904        imp_tree->next( )        ../Tree.php:618
43        0.4192        7648576        imp_tree->next( )        ../Tree.php:618
44        0.4193        7649784        imp_tree->next( )        ../Tree.php:618
45        0.4194        7650456        imp_tree->next( )        ../Tree.php:618
46        0.4195        7651128        imp_tree->next( )        ../Tree.php:618
47        0.4196        7651800        imp_tree->next( )        ../Tree.php:618
48        0.4197        7652472        imp_tree->next( )        ../Tree.php:618
49        0.4198        7653144        imp_tree->next( )        ../Tree.php:618
50        0.4199        7653816        imp_tree->next( )        ../Tree.php:618
51        0.4201        7654488        imp_tree->next( )        ../Tree.php:618
52        0.4202        7655160        imp_tree->next( )        ../Tree.php:618
53        0.4203        7655832        imp_tree->next( )        ../Tree.php:618
54        0.4204        7656504        imp_tree->next( )        ../Tree.php:618
55        0.4205        7657176        imp_tree->next( )        ../Tree.php:618
56        0.4206        7657848        imp_tree->next( )        ../Tree.php:618
57        0.4207        7658520        imp_tree->next( )        ../Tree.php:618
58        0.4208        7659192        imp_tree->next( )        ../Tree.php:618
59        0.4209        7659864        imp_tree->next( )        ../Tree.php:618
60        0.4210        7660536        imp_tree->next( )        ../Tree.php:618
61        0.4211        7661208        imp_tree->next( )        ../Tree.php:618
62        0.4212        7661880        imp_tree->next( )        ../Tree.php:618
63        0.4213        7662552        imp_tree->next( )        ../Tree.php:618
64        0.4214        7663224        imp_tree->next( )        ../Tree.php:618
65        0.4215        7663896        imp_tree->next( )        ../Tree.php:618
66        0.4216        7664568        imp_tree->next( )        ../Tree.php:618
67        0.4218        7665240        imp_tree->next( )        ../Tree.php:618
68        0.4219        7665912        imp_tree->next( )        ../Tree.php:618
69        0.4220        7666584        imp_tree->next( )        ../Tree.php:618
70        0.4221        7667256        imp_tree->next( )        ../Tree.php:618
71        0.4222        7667928        imp_tree->next( )        ../Tree.php:618
72        0.4223        7668600        imp_tree->next( )        ../Tree.php:618
73        0.4224        7669272        imp_tree->next( )        ../Tree.php:618
74        0.4225        7669944        imp_tree->next( )        ../Tree.php:618
75        0.4226        7670616        imp_tree->next( )        ../Tree.php:618
76        0.4227        7671288        imp_tree->next( )        ../Tree.php:618
77        0.4228        7671960        imp_tree->next( )        ../Tree.php:618
78        0.4229        7672632        imp_tree->next( )        ../Tree.php:618
79        0.4230        7673304        imp_tree->next( )        ../Tree.php:618
80        0.4231        7673976        imp_tree->next( )        ../Tree.php:618
81        0.4233        7674648        imp_tree->next( )        ../Tree.php:618
82        0.4234        7675320        imp_tree->next( )        ../Tree.php:618
83        0.4235        7675992        imp_tree->next( )        ../Tree.php:618
84        0.4236        7677704        imp_tree->next( )        ../Tree.php:618
85        0.4237        7678376        imp_tree->next( )        ../Tree.php:618
86        0.4238        7679048        imp_tree->next( )        ../Tree.php:618
87        0.4239        7679720        imp_tree->next( )        ../Tree.php:618
88        0.4240        7680392        imp_tree->next( )        ../Tree.php:618
89        0.4241        7682136        imp_tree->next( )        ../Tree.php:618
90        0.4242        7682808        imp_tree->next( )        ../Tree.php:618
91        0.4243        7683480        imp_tree->next( )        ../Tree.php:618
92        0.4244        7684152        imp_tree->next( )        ../Tree.php:618
93        0.4245        7684824        imp_tree->next( )        ../Tree.php:618
94        0.4246        7685496        imp_tree->next( )        ../Tree.php:618
95        0.4247        7686168        imp_tree->next( )        ../Tree.php:618
96        0.4248        7686840        imp_tree->next( )        ../Tree.php:618
97        0.4249        7687512        imp_tree->next( )        ../Tree.php:618
98        0.4250        7688184        imp_tree->next( )        ../Tree.php:618
99        0.4251        7688496        imp_tree->_activeelt( )        ../Tree.php:578

11/01/2008 Jan Schneider Comment #3 Reply to this comment
It happened again this month. This might be some recursion protection 
from Xdebug though. I still wonder if recursively calling next() this 
often in the expected behavior. If yes, then this ticket can be closed.
10/19/2008 Michael Slusarz Comment #2
State ⇒ Feedback
Reply to this comment
I don't see this.
10/01/2008 Jan Schneider Comment #1
Patch ⇒
Milestone ⇒
Assigned to Michael Slusarz
Summary ⇒ Infinite recursion when renaming sentmail folders
Type ⇒ Bug
Priority ⇒ 1. Low
State ⇒ Assigned
Queue ⇒ IMP
Reply to this comment
Running the monthly maintenance to rename sentmail folders seems to 
get trapped in an infinite recursion. Here's the error and backtrace:

( ! ) Fatal error: Maximum function nesting level of '100' reached, 
aborting! in /srv/www/htdocs/horde/imp/lib/IMAP/Tree.php on line 1039
Call Stack
#        Time        Memory        Function        Location
1        0.0003        15080        {main}( )        ../index.php:0
2        0.7045        93656        require( '/srv/www/htdocs/horde/imp/redirect.php' 
)        ../index.php:26
3        1.8809        5907968        imp_session::logintasks( )        ../redirect.php:121
4        2.0148        5911952        maintenance_imp->runmaintenance( )        ../Session.php:332
5        2.0148        5911952        maintenance_imp->_domaintenancetasks( 
)        ../Maintenance.php:187
6        2.0160        5935224        maintenance_task_rename_sentmail_monthly->domaintenance( 
)        ../Maintenance.php:494
7        4.3905        8620184        imp_folder->rename( )        ../rename_sentmail_monthly.php:43
8        5.2041        8627760        imp_folder->_ondelete( )        ../Folder.php:400
9        5.2045        8627848        imp_search->sessionsetup( )        ../Folder.php:241
10        5.2045        8627848        imp_search->createvinboxfolder( )        ../Search.php:104
11        5.2055        8626984        imp_tree->getpolllist( )        ../Search.php:430
12        5.2055        8627016        imp_tree->folderlist( )        ../Tree.php:1156
13        5.4452        8634072        imp_tree->next( )        ../Tree.php:1748
14        5.4454        8634072        imp_tree->next( )        ../Tree.php:618
15        5.4455        8634072        imp_tree->next( )        ../Tree.php:618
16        5.4456        8634072        imp_tree->next( )        ../Tree.php:618
17        5.4457        8634072        imp_tree->next( )        ../Tree.php:618
18        5.4458        8634072        imp_tree->next( )        ../Tree.php:618
19        5.4459        8634072        imp_tree->next( )        ../Tree.php:618
20        5.4460        8634072        imp_tree->next( )        ../Tree.php:618
21        5.4461        8634072        imp_tree->next( )        ../Tree.php:618
22        5.4462        8634072        imp_tree->next( )        ../Tree.php:618
23        5.4463        8634072        imp_tree->next( )        ../Tree.php:618
24        5.4463        8634072        imp_tree->next( )        ../Tree.php:618
25        5.4464        8634072        imp_tree->next( )        ../Tree.php:618
26        5.4466        8634072        imp_tree->next( )        ../Tree.php:618
27        5.4466        8634072        imp_tree->next( )        ../Tree.php:618
28        5.4467        8634072        imp_tree->next( )        ../Tree.php:618
29        5.4468        8634072        imp_tree->next( )        ../Tree.php:618
30        5.4469        8634072        imp_tree->next( )        ../Tree.php:618
31        5.4470        8634072        imp_tree->next( )        ../Tree.php:618
32        5.4471        8634072        imp_tree->next( )        ../Tree.php:618
33        5.4472        8634072        imp_tree->next( )        ../Tree.php:618
34        5.4473        8634072        imp_tree->next( )        ../Tree.php:618
35        5.4474        8634072        imp_tree->next( )        ../Tree.php:618
36        5.4475        8634072        imp_tree->next( )        ../Tree.php:618
37        5.4476        8634072        imp_tree->next( )        ../Tree.php:618
38        5.4477        8634072        imp_tree->next( )        ../Tree.php:618
39        5.4479        8634072        imp_tree->next( )        ../Tree.php:618
40        5.4480        8634072        imp_tree->next( )        ../Tree.php:618
41        5.4481        8634312        imp_tree->next( )        ../Tree.php:618
42        5.4482        8634672        imp_tree->next( )        ../Tree.php:618
43        5.4483        8635032        imp_tree->next( )        ../Tree.php:618
44        5.4484        8635392        imp_tree->next( )        ../Tree.php:618
45        5.4485        8635752        imp_tree->next( )        ../Tree.php:618
46        5.4486        8636112        imp_tree->next( )        ../Tree.php:618
47        5.4487        8636472        imp_tree->next( )        ../Tree.php:618
48        5.4488        8636832        imp_tree->next( )        ../Tree.php:618
49        5.4489        8637192        imp_tree->next( )        ../Tree.php:618
50        5.4490        8637552        imp_tree->next( )        ../Tree.php:618
51        5.4491        8637912        imp_tree->next( )        ../Tree.php:618
52        5.4492        8638272        imp_tree->next( )        ../Tree.php:618
53        5.4493        8638632        imp_tree->next( )        ../Tree.php:618
54        5.4494        8638992        imp_tree->next( )        ../Tree.php:618
55        5.4495        8639352        imp_tree->next( )        ../Tree.php:618
56        5.4496        8639712        imp_tree->next( )        ../Tree.php:618
57        5.4497        8640072        imp_tree->next( )        ../Tree.php:618
58        5.4498        8640432        imp_tree->next( )        ../Tree.php:618
59        5.4499        8640792        imp_tree->next( )        ../Tree.php:618
60        5.4500        8641152        imp_tree->next( )        ../Tree.php:618
61        5.4501        8641512        imp_tree->next( )        ../Tree.php:618
62        5.4502        8641872        imp_tree->next( )        ../Tree.php:618
63        5.4503        8642232        imp_tree->next( )        ../Tree.php:618
64        5.4505        8642592        imp_tree->next( )        ../Tree.php:618
65        5.4506        8642952        imp_tree->next( )        ../Tree.php:618
66        5.4507        8643312        imp_tree->next( )        ../Tree.php:618
67        5.4508        8643672        imp_tree->next( )        ../Tree.php:618
68        5.4509        8644032        imp_tree->next( )        ../Tree.php:618
69        5.4510        8644392        imp_tree->next( )        ../Tree.php:618
70        5.4511        8644752        imp_tree->next( )        ../Tree.php:618
71        5.4512        8645112        imp_tree->next( )        ../Tree.php:618
72        5.4513        8645472        imp_tree->next( )        ../Tree.php:618
73        5.4514        8645832        imp_tree->next( )        ../Tree.php:618
74        5.4515        8646192        imp_tree->next( )        ../Tree.php:618
75        5.4516        8646552        imp_tree->next( )        ../Tree.php:618
76        5.4517        8646912        imp_tree->next( )        ../Tree.php:618
77        5.4518        8647272        imp_tree->next( )        ../Tree.php:618
78        5.4520        8647632        imp_tree->next( )        ../Tree.php:618
79        5.4521        8647992        imp_tree->next( )        ../Tree.php:618
80        5.4522        8648352        imp_tree->next( )        ../Tree.php:618
81        5.4523        8648712        imp_tree->next( )        ../Tree.php:618
82        5.4524        8649072        imp_tree->next( )        ../Tree.php:618
83        5.4525        8649432        imp_tree->next( )        ../Tree.php:618
84        5.4526        8649792        imp_tree->next( )        ../Tree.php:618
85        5.4527        8650152        imp_tree->next( )        ../Tree.php:618
86        5.4528        8650512        imp_tree->next( )        ../Tree.php:618
87        5.4529        8650872        imp_tree->next( )        ../Tree.php:618
88        5.4530        8651232        imp_tree->next( )        ../Tree.php:618
89        5.4531        8651592        imp_tree->next( )        ../Tree.php:618
90        5.4532        8651952        imp_tree->next( )        ../Tree.php:618
91        5.4533        8652312        imp_tree->next( )        ../Tree.php:618
92        5.4534        8652672        imp_tree->next( )        ../Tree.php:618
93        5.4535        8653064        imp_tree->next( )        ../Tree.php:618
94        5.4537        8653504        imp_tree->next( )        ../Tree.php:618
95        5.4538        8653976        imp_tree->next( )        ../Tree.php:618
96        5.4539        8654544        imp_tree->next( )        ../Tree.php:618
97        5.4540        8655160        imp_tree->next( )        ../Tree.php:618
98        5.4541        8655776        imp_tree->_activeelt( )        ../Tree.php:616
99        5.4541        8655776        imp_tree->iscontainer( )        ../Tree.php:1445