As I said, calling functions requires memory, the function each has variables that take more memory. You need to call free memory inside of a function. Simply redirecting lcd message to serial port will also be a good idea to see if the I2C LCD or library of it is making trouble.