Issues

Select view

Select search mode

 
16 of 16

OOME while deserializing database session data

Description

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()#" />

Environment

Tested on latest OSX and Ubuntu 20.x

Attachments

1
  • 02 Sept 2021, 12:46 am

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

Affects versions

Created 2 September 2021 at 00:47
Updated 1 July 2023 at 15:37

Activity

Show:

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

Flag notifications