View ProjeQtOr On SourceForge.net
ProjeQtOr - Project Management Tool
Support us on Capterra
OIN - Open Invention Network
ProjeQtOr free project management software - Infinite loop and eventual crash - ProjeQtOr
 
 

Infinite loop and eventual crash

More
14 Oct 2023 17:13 #1 by grin
I believe I have successfully created a plan which probably either contains a loop or contains interdependant relations.

However, I would believe this is rather ordinary and Projeqtor should handle gracefully. Instead, what happens is that PHP eats all available memory then crashes.

I am not a php coder so took some rather unholy amount of time to try to get a stack trace where this happens, so apologies for the format.
(The line numbers in
SqlElement.php
are a bit off since it was full of debug lines, but the function names shall be correct.)

This is after a few seconds. It runs for a few minutes, in the end the stack trace is.... long. And all the objects are on the stack, so multiply a huge object on stack by infinite number of recursions....
0:/home/projeqtor/projeqtor/model/persistence/SqlElement.php 786; SqlElement::getSqlElement
1:/home/projeqtor/projeqtor/model/PlanningElement.php 194; SqlElement::__construct
2:/home/projeqtor/projeqtor/model/ProjectPlanningElementMain.php 187; PlanningElement::__construct
3:/home/projeqtor/projeqtor/model/ProjectPlanningElement.php 39; ProjectPlanningElementMain::__construct
4:/home/projeqtor/projeqtor/model/persistence/SqlElement.php 3590; ProjectPlanningElement::__construct
5:/home/projeqtor/projeqtor/model/persistence/SqlElement.php 3555; SqlElement::getDependantSqlElement
6:/home/projeqtor/projeqtor/model/persistence/SqlElement.php 786; SqlElement::getSqlElement
7:/home/projeqtor/projeqtor/model/ProjectMain.php 220; SqlElement::__construct
8:/home/projeqtor/projeqtor/model/Project.php 40; ProjectMain::__construct
9:/home/projeqtor/projeqtor/model/persistence/SqlList.php 406; Project::__construct
10:/home/projeqtor/projeqtor/tool/projeqtor.php 4246; SqlList::getFieldFromId
11:/home/projeqtor/projeqtor/tool/projeqtor.php 3631; ::isOffDay
12:/home/projeqtor/projeqtor/tool/projeqtor.php 3603; ::removeWorkDaysToDate
13:/home/projeqtor/projeqtor/model/PlannedWork.php 2280; ::addWorkDaysToDate
14:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
15:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
16:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
17:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
18:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
19:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
20:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
21:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
22:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
23:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
24:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
25:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
26:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
27:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
28:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
29:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
30:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
31:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
32:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
33:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
34:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
35:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
36:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
37:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
38:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
39:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
40:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
41:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
42:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
43:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
44:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
45:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
46:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
47:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
48:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
49:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
50:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
51:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
52:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
53:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
54:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
55:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
56:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
57:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
58:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
59:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
60:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
61:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
62:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
63:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
64:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
65:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
66:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
67:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
68:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
69:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
70:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
71:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
72:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
73:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
74:/home/projeqtor/projeqtor/model/PlannedWork.php 2282; PlannedWork::reverse
75:/home/projeqtor/projeqtor/model/PlannedWork.php 2243; PlannedWork::reverse
76:/home/projeqtor/projeqtor/model/PlannedWork.php 1883; PlannedWork::calculateCriticalPath
77:/home/projeqtor/projeqtor/tool/plan.php 62; PlannedWork::plan

Please Log in or Create an account to join the conversation.

More
19 Oct 2023 19:57 #2 by babynus
Please run consitency check in Administrative screen.
It may find infinite loop issues.

Babynus
Administrator of ProjeQtOr web site

Please Log in or Create an account to join the conversation.

More
19 Oct 2023 20:04 #3 by grin

babynus post=36081 wrote: Please run consitency check in Administrative screen.
It may find infinite loop issues.

Very unfortunately that was the first (few) things I have tried, and it finds everything to be just fine.
"No Issue Found" for all the checks.
Any other idea? Any manual checks? I surely have used a lot of criscrossed references but no intentional loops created, and I cannot even tell where it is (though I can suspect the task it crashes on).
 

Please Log in or Create an account to join the conversation.

More
19 Oct 2023 20:13 #4 by babynus
About your traces, just add insformation to check if it is an infinite look, of just "long" execution.
For instance instead of writing
debugLog("PlannedWork::reverse");
try something like 
debugLog("PlannedWork::reverse($nodeId,$idProject)");

So trace will be more explict : always the same or changing.
Possibly it is just long execution on large project on not too powerfull server ;)

Babynus
Administrator of ProjeQtOr web site

Please Log in or Create an account to join the conversation.

More
19 Oct 2023 20:28 #5 by grin

babynus post=36086 wrote: About your traces, just add insformation to check if it is an infinite look, of just "long" execution.
For instance instead of writing

debugLog("PlannedWork::reverse");
try something like 
debugLog("PlannedWork::reverse($nodeId,$idProject)");


 


This output was created from a very full backtrace, so I have the full parameters in an 1.1 MB file.
You can retrieve it from here . It's a huge JSON plus a rude php code to print whatever you want to see from that mess, but it does contain the whole backtrace.

So trace will be more explict : always the same or changing.
Possibly it is just long execution on large project on not too powerfull server ;)

The project contains about 15 tasks, and a handful of everything, like a good test should.
The machine is, well, it is a container running on plenty of resources, but it's obviosuly looping since normal recalculation took about 500 ms and now it takes 5 minutes, about 50 times the memory and then crash, so I am fairly sure it's not the machine.  :-)

(Sidenote: I found Projeqtor a few weeks ago by accident, and I am still in awe how versatile and smart it is. I think I have tested most of the available project management code on Linux, and while your UI is not always the best, the code, feature-wise, is not even in the same universe as the others. I still try to get to know the various logic in Projeqtor, and I  apologise in advance for my questions yet to come. :grin:)

Please Log in or Create an account to join the conversation.

More
20 Oct 2023 09:34 #6 by babynus
Hi,
cannot examine your dump.
Please remove all other traces and keep only advised one.
Possible, if you use debugLog for other traces, use traceLog for this one and set logging level to trace.
Thanks.

Babynus
Administrator of ProjeQtOr web site

Please Log in or Create an account to join the conversation.

Moderators: babynusprotion
Time to create page: 0.045 seconds

Cookies settings

×

Functional Cookies

Ce site utilise des cookies pour assurer son bon fonctionnement et ne peuvent pas être désactivés de nos systèmes. Nous ne les utilisons pas à des fins publicitaires. Si ces cookies sont bloqués, certaines parties du site ne pourront pas fonctionner.

Session

Please login to see yours activities!

Other cookies

Ce site web utilise un certain nombre de cookies pour gérer, par exemple, les sessions utilisateurs.