Simple Example how endless loops with Dynamic Actions can happen.
At first there is only a Dynamic Action on Item P11_PART1, which after change calculates P11_PART2.
If you flip the "Activate Reverse Calculation" to Yes there will be another Dynamic Action activated, which calculates P11_PART1 out of P11_PART2.
The endless loop now will not only block your browser completely, it also sends an endless number of AJAX calls to the database, since we do our calculation in PL/SQL.
To fix this endless loop you'll have to switch the "Suppress Change Event" to Yes on both Dynamic Actions, otherwise they keep triggering one each other.
The second Improvement would be to do the math locally in Javascript, to avoid unnecessary AJAX calls to the database.