Open rtoy opened 4 months ago
Imported from SourceForge on 2024-07-08 09:30:01 Created by robert_dodier on 2022-11-03 16:58:05 Original: https://sourceforge.net/p/maxima/bugs/2851/#dd02
Imported from SourceForge on 2024-07-08 09:30:05 Created by robert_dodier on 2022-11-03 16:58:05 Original: https://sourceforge.net/p/maxima/bugs/2851/#e426
I looked at a similar problem and it looks like the results of comparisons are cached in the assume database, and when there are a lot of comparisons, it quickly blows up. We should look at whether it's necessary to do that caching.
Imported from SourceForge on 2024-07-08 09:30:08 Created by peterpall on 2023-04-30 06:40:54 Original: https://sourceforge.net/p/maxima/bugs/2851/#e426/b533
many comparisons are fast. The assume database quickly grows slow if we ca he many comparisons in it. It doesn't make sense to cache stuff that is fast and showtime shows that we have a timer => could we trigger saving something to that cache only if a comparison requires more than 0.1 seconds or similar?
Imported from SourceForge on 2024-07-08 09:30:12 Created by macrakis on 2023-05-01 16:40:41 Original: https://sourceforge.net/p/maxima/bugs/2851/#dc84
This has to do with compar, not with if. Reproduced with smaller constants:
assume(x > 100);
for i thru 1000000 do
sign(x*random(100)/(random(100)+1)+random(100)-x-50);
INFO: Binding stack guard page unprotected
How long it takes to fail varies quite a lot.
Maxima 5.46.0 SBCL 2.3.0 MacOS
Imported from SourceForge on 2024-07-08 09:30:16 Created by macrakis on 2023-05-01 16:42:22 Original: https://sourceforge.net/p/maxima/bugs/2851/#344b
Imported from SourceForge on 2024-07-08 09:30:00 Created by peterpall on 2014-12-05 04:47:04 Original: https://sourceforge.net/p/maxima/bugs/2851
There have been many places where an if caused the facts database to overflow and that have been fixed. Seems like one of them is still left:
x*(random number)
with anotherx*(random number)
doesn't trigger it eitherx*(random number)+1
with anotherx*(random number)+1
doesn't trigger an out of memory:x*(random number)+random number
with anotherx*(random number)+random number
quickly (within 1-2 seconds) triggers an out of memory using gcl:Also while this loop is running the memory usage of gcl constantly increases. Using sbcl I didn't run out of memory and in fact the memory usage didn't increase.
Seems like a bind stack overflow pops up at least once a year in the maxima mailing list and all of the times the maxima is running using gcl. Which might be caused by the fact, though, that the windows installer and the debian package (which is also used on ubuntu) are using gcl.