Issues
- OOME while deserializing database session dataLDEV-3701Michael Offner
- pdf.extension not loadedLDEV-3663Resolved issue: LDEV-3663
- QoQ mishandles null and boolean column aliasesLDEV-3615Resolved issue: LDEV-3615Pothys - MitrahSoft
- Character is not considered simple according to isSimpleValue()LDEV-3598Resolved issue: LDEV-3598Pothys - MitrahSoft
- cfdocument ignores link stylesheetsLDEV-3571Resolved issue: LDEV-3571Pothys - MitrahSoft
- Cascading "Standard (CFML Default)" setting behaves differently than ACFLDEV-3523Michael Offner
- MSSQL version 9.3.1 shows the error in application page.LDEV-3492Resolved issue: LDEV-3492Pothys - MitrahSoft
- CFINVOKE doesn't work with urlsLDEV-3491Resolved issue: LDEV-3491Michael Offner
- Unexpectedly large memory usage with large variablesLDEV-3435Michael Offner
- FileAppend does not support file objectLDEV-3424Resolved issue: LDEV-3424Mircea Botez
- Lucee attempts to process a CF tag embedded as characters within a string within a function within a componentLDEV-3402Michael Offner
- Null values replaced with zeros in numeric columns with certain queries using query of query and in operatorLDEV-3395Resolved issue: LDEV-3395Pothys - MitrahSoft
- ExpandPath return wrong case, when using a mappingLDEV-3369Michael Offner
- getComponentMetaData omits static methods and propertiesLDEV-3362Resolved issue: LDEV-3362Pothys - MitrahSoft
- Admin won't load when file access is set to localLDEV-3339Michael Offner
- callling instance functions of a component within a cfthread failsLDEV-2984Resolved issue: LDEV-2984Michael Offner
OOME while deserializing database session data
Description
Environment
Tested on latest OSX and Ubuntu 20.x
Attachments
Details
Assignee
Michael OffnerMichael OffnerReporter
Paul KlinkenbergPaul KlinkenbergPriority
NewLabels
New Issue warning screen
Before you create a new Issue, please post to the mailing list first https://dev.lucee.org
Once the issue has been verified, one of the Lucee team will ask you to file an issue
Sprint
Affects versions
Details
Details
Assignee
Reporter
Priority
Labels
New Issue warning screen
Before you create a new Issue, please post to the mailing list first https://dev.lucee.org
Once the issue has been verified, one of the Lucee team will ask you to file an issue
Sprint
Affects versions
Activity
Zac Spitzer2 September 2021 at 09:38
Lucee 5.3.9.4-SNAPSHOT Error (java.lang.OutOfMemoryError)
Message Java heap space
Java Stacktrace lucee.runtime.exp.NativeException: Java heap space
at org.apache.commons.collections4.map.AbstractReferenceMap.doReadObject(AbstractReferenceMap.java:1072)
at org.apache.commons.collections4.map.ReferenceMap.readObject(ReferenceMap.java:197)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1175)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2273)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2144)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646)
at java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2412)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2306)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2144)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646)
at java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2412)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2306)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2144)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646)
at java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2412)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2306)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2144)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:464)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
at lucee.commons.collection.concurrent.ConcurrentHashMapNullSupport.readObject(ConcurrentHashMapNullSupport.java:1336)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1175)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2273)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2144)
Caused by: java.lang.OutOfMemoryError: Java heap space
I received some odd Out Of Memory Errors coming from my servers. I noticed some requests triggered a sudden drop of the available JVM memory to zero, leading to the OOME. After much investigation, I found out it had to do with the deserialization of session data stored in the database.
If you use a JVM with 2GB or less, and run the steps at the 'steps to reproduce', you will get an OOME.
The memory issue happens at IKStorageValue.getValue() by the way, not at the deserialize().
The session data itself is around 10 keys, containing strings and 2 structs with more data. One of those structs is the form scope, and when looking at the output of the cfdump above (using -Xmx4096m), I can see that form scope is seen as "Struct (soft)".
That might be the problematic part?
Steps to Reproduce
1. Use a Lucee instance with less then 2GB Ram
2. Run this code:
<!--- JavaConverter is used in Lucee to deserialize database session data ---> <cfset my_IKStorageValue = createObject('java', 'lucee.runtime.converter.JavaConverter').deserialize( 'rO0ABXNyAC9sdWNlZS5ydW50aW1lLnR5cGUuc2NvcGUuc3RvcmFnZS5JS1N0b3JhZ2VWYWx1ZSXcdnpeLxPxAgACSgAMbGFzdE1vZGlmaWVkWwAEYmFycnQAAltCeHAAAAF7oobB+HVyAAJbQqzzF/gGCFTgAgAAeHAAAA5prO0ABXNyAEBsdWNlZS5jb21tb25zLmNvbGxlY3Rpb24uY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcE51bGxTdXBwb3J0ZJneEp2HKT0DAANJAAtzZWdtZW50TWFza0kADHNlZ21lbnRTaGlmdFsACHNlZ21lbnRzdABLW0xsdWNlZS9jb21tb25zL2NvbGxlY3Rpb24vY29uY3VycmVudC9Db25jdXJyZW50SGFzaE1hcE51bGxTdXBwb3J0JFNlZ21lbnQ7eHAAAAAAAAAAIHVyAEtbTGx1Y2VlLmNvbW1vbnMuY29sbGVjdGlvbi5jb25jdXJyZW50LkNvbmN1cnJlbnRIYXNoTWFwTnVsbFN1cHBvcnQkU2VnbWVudDtwkN7o9kof6gIAAHhwAAAAAXNyAEhsdWNlZS5jb21tb25zLmNvbGxlY3Rpb24uY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcE51bGxTdXBwb3J0JFNlZ21lbnQfNkyQWJMpPQIAAUYACmxvYWRGYWN0b3J4cgAoamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50TG9ja2ZVqCwsyGrrAgABTAAEc3luY3QAL0xqYXZhL3V0aWwvY29uY3VycmVudC9sb2Nrcy9SZWVudHJhbnRMb2NrJFN5bmM7eHBzcgA0amF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50TG9jayROb25mYWlyU3luY2WIMudTe78LAgAAeHIALWphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2skU3luY7geopSqRFp8AgAAeHIANWphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyZlWoQ3U/UuMCAAFJAAVzdGF0ZXhyADZqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdE93bmFibGVTeW5jaHJvbml6ZXIz36+5rW1vqQIAAHhwAAAAAD9AAABzcgAabHVjZWUucnVudGltZS50eXBlLktleUltcGyE+b8vafRvZwwAAHhwdAAHY2Z0b2tlbnhzcgAzbHVjZWUucnVudGltZS50eXBlLnNjb3BlLnN0b3JhZ2UuSUtTdG9yYWdlU2NvcGVJdGVtjl8IifXni04CAANKAAtsYXN0TW9kaWZlZFoAB3JlbW92ZWRMAAV2YWx1ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwAAABe6KGwKQAdAABMHNxAH4ADnQACFNNQVJUUEFZeHNxAH4AEQAAAXuebFuQAHNyAB1sdWNlZS5ydW50aW1lLnR5cGUuU3RydWN0SW1wbBO7DyUhSuS5AgACSQAEdHlwZUwAA21hcHQAD0xqYXZhL3V0aWwvTWFwO3hyACVsdWNlZS5ydW50aW1lLnR5cGUudXRpbC5TdHJ1Y3RTdXBwb3J0ZymyiRg5heMCAAB4cP////9zcQB+AAAAAAAAAAAAIHVxAH4AAwAAAAFzcQB+AAVzcQB+AAkAAAAAP0AAAHNxAH4ADnQAC1FVRVJZU1RSSU5HeHQBbD90ZW1wbGF0ZT1kZWZhdWx0JmNhcmRfdHlwZXM9VklTQXxNQVNURVJDQVJEJnByaW1hcnlfcmVmX25hbWU9T3JkZXIgNzM5NTEmYmlsbF9uYW1lPXRyYW5zYWN0Jm1lcmNoYW50X2lkPVNNQTAwMDImdHhuX3R5cGU9MCZwcmltYXJ5X3JlZj0yMDIxMDgzMTIyNTUwNl83MzQ1MCZhbW91bnQ9NzM0NTAmZnBfdGltZXN0YW1wPTIwMjEwODMxMjI1NTA2JmZpbmdlcnByaW50PTMxNWQzMjRiMjcyMzc5N2MyMjQ4MzYzOTNmOWEyMjM0ZmM3YjA2YTgmZGlzcGxheV9yZWNlaXB0PW5vJnJldHVybl91cmw9aHR0cHM6Ly93d3cuc21hcnRzdXBwbGllcy5jb20uYXUvbW9kdWxlL0NvbnRlbnQvU2hvcHBpbmdTeXN0ZW0vc2VjdXJlcGF5X3JldHVybi5jZm1zcQB+AA50AAtQUklNQVJZX1JFRnh0ABQyMDIxMDgzMTIyNTUwNl83MzQ1MHNxAH4ADnQABkFNT1VOVHh0AAU3MzQ1MHNxAH4ADnQACFRYTl9UWVBFeHQAATBzcQB+AA50AAtGSU5HRVJQUklOVHh0ACgzMTVkMzI0YjI3MjM3OTdjMjI0ODM2MzkzZjlhMjIzNGZjN2IwNmE4c3EAfgAOdAALSEFTSF9TVFJJTkd4dAA6U01BMDAwMnxhYmMxMjN8MHwyMDIxMDgzMTIyNTUwNl83MzQ1MHw3MzQ1MHwyMDIxMDgzMTIyNTUwNnNxAH4ADnQADEZQX1RJTUVTVEFNUHh0AA4yMDIxMDgzMTIyNTUwNnNxAH4ADnQACUJJTExfTkFNRXh0AAh0cmFuc2FjdHNxAH4ADnQAC01FUkNIQU5UX0lEeHQAB1NNQTAwMDJwcHhzcQB+AA50AAlsYXN0dmlzaXR4c3EAfgARAAABe6KGwQsAc3IAImx1Y2VlLnJ1bnRpbWUudHlwZS5kdC5EYXRlVGltZUltcGyL7K30ezFucgIAAHhyAB5sdWNlZS5ydW50aW1lLnR5cGUuZHQuRGF0ZVRpbWUfMrJraWnmvwIAAHhyAA5qYXZhLnV0aWwuRGF0ZWhqgQFLWXQZAwAAeHB3CAAAAXuihsCjeHNxAH4ADnQACHVybHRva2VueHNxAH4AEQAAAXuihsCkAHQAM0NGSUQ9YzY0MTdjZGItOGVjNS00ZDA1LWIyNDYtOWUxZjcwNjNlYWVkJkNGVE9LRU49MHNxAH4ADnQACXNlc3Npb25pZHhzcQB+ABEAAAF7oobApAB0ADdNeVNtYXJ0U3VwcGxpZXMyX2M2NDE3Y2RiLThlYzUtNGQwNS1iMjQ2LTllMWY3MDYzZWFlZF8wc3EAfgAOdAALdGltZWNyZWF0ZWR4c3EAfgARAAABe6KGwQsAc3EAfgA+dwgAAAF7mQKKCXhzcQB+AA50AA5DQVJUR09CQUNLTElOS3hzcQB+ABEAAAF7nmvu4gB0ADxodHRwczovL3d3dy5zbWFydHN1cHBsaWVzLmNvbS5hdS9zbWFydC1jb25uZWN0L29yZGVyLWhpc3RvcnlzcQB+AA50AARjZmlkeHNxAH4AEQAAAXuihsCkAHQAJGM2NDE3Y2RiLThlYzUtNGQwNS1iMjQ2LTllMWY3MDYzZWFlZHNxAH4ADnQABk1ZRk9STXhzcQB+ABEAAAF7nmxbjwBzcQB+ABgAAAAEc3IAJWphdmEudXRpbC5Db2xsZWN0aW9ucyRTeW5jaHJvbml6ZWRNYXAbc/kJS0s5ewMAAkwAAW1xAH4AGUwABW11dGV4cQB+ABJ4cHNyADBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnM0Lm1hcC5SZWZlcmVuY2VNYXAVlMoDmEkI1wMAAHhwdxEAAAAAAAAAAQA/QAAACAAAAHNxAH4ADnQACHRDb21tZW50eHQAAHNxAH4ADnQAB3RTdWJ1cmJ4dAAJRGVsc3VidXJic3EAfgAOdAAKdEZpcnN0bmFtZXh0AAlQYXVsIFRFU1RzcQB+AA50AA5PcmdhbmlzYXRpb25JRHh0AABzcQB+AA50AApmaWVsZG5hbWVzeHQA33REZXRhaWxzLG5TaGlwcGluZ0Nvc3QsU2hpcHBpbmdPcHRpb25JRCx0Rmlyc3RuYW1lLHRMYXN0TmFtZSx0Q29tcGFueSx0QWRkcmVzcyx0U3VidXJiLHRTdGF0ZSx0UG9zdGNvZGUsdEN1c3RvbWVyT3JkZXJObyxDb3VudHJ5SUQsdENvbW1lbnQsYkFjY2VwdFRlcm1zLFBheW1lbnRPcHRpb25JRCxMaXN0aW5nVHlwZUlELEZvcmVpZ25JRCxDb250ZW50Rm9yZWlnbklELENvbXBsZXRlT3JkZXJzcQB+AA50AAlGb3JlaWduSUR4dAAAc3EAfgAOdAAJQ291bnRyeUlEeHQAATFzcQB+AA50ABB0Q3VzdG9tZXJPcmRlck5veHQAAHNxAH4ADnQADUNvbXBsZXRlT3JkZXJ4dAAPUHJvY2VzcyBQYXltZW50c3EAfgAOdAAIdENvbXBhbnl4dAAQVGVzdCBkZXZlbG9wbWVudHNxAH4ADnQACXRQb3N0Y29kZXh0AAtEZWxQb3N0Y29kZXNxAH4ADnQADGJBY2NlcHRUZXJtc3h0AAExc3EAfgAOdAAQQ29udGVudEZvcmVpZ25JRHh0AAE0c3EAfgAOdAAPUGF5bWVudE9wdGlvbklEeHQAATJzcQB+AA50AA1uU2hpcHBpbmdDb3N0eHQAATBzcQB+AA50ABBTaGlwcGluZ09wdGlvbklEeHQAAHNxAH4ADnQADUxpc3RpbmdUeXBlSUR4dAABNnNxAH4ADnQABnRTdGF0ZXh0AAhEZWxzdGF0ZXNxAH4ADnQACHREZXRhaWxzeHQAjzxsaT4xwqAzTSBXaXJlbGVzcyBNb3VzZSBFcmdvbm9taWMgTGFyZ2U8YnI+PGxpPjHCoDNNIFdpcmVsZXNzIE1vdXNlIEVyZ29ub21pYyBTbWFsbDxicj48bGk+McKgT25saW5lIEZsYXNoIERlYWwhIC0gR2JjIEEyMCBCaW5kaW5nIE1hY2hpbmU8YnI+c3EAfgAOdAAIdEFkZHJlc3N4dAAYRGVsYWRkcmVzcyAxRGVsYWRkcmVzcyAyc3EAfgAOdAAJdExhc3ROYW1leHQAC0tsaW5rZW5iZXJncHhxAH4AW3hwcHg=' ) /> <cfdump var="#my_IKStorageValue.getValue()#" />