Can't reproduce the problem on Nexus S with ICS....but i had a closer look at the log that you send me, and some things are really strange with the output. But at first: This log isn't taken from the beta version that i uploaded...it prints out messages that are long gone while others are missing. So please double check your setup to ensure that you are using the latest version.
Anyway, the log contains two things that puzzles me:
02-01 21:22:43.820: I/jPCT-AE(15360): Visibility lists disposed!
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 1
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 2
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 3
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 4
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 5
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 6
02-01 21:22:43.820: I/jPCT-AE(15360): All texture data unloaded from gpu!
02-01 21:22:43.820: I/jPCT-AE(15360): Disposing VBOs!
02-01 21:22:43.820: I/jPCT-AE(15360): Renderer disposed!
02-01 21:22:43.820: I/jPCT-AE(15360): Static references cleared...
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL vendor: NVIDIA Corporation
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL renderer: NVIDIA AP
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL version: OpenGL ES-CM 1.1
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL renderer initialized (using 2 texture stages)
....
02-01 21:22:43.910: I/jPCT-AE(15360): Visibility lists disposed!
The first part looks fine...the old framebuffer gets disposed, the new comes up...and then, something disposes a visibility list again. That doesn't make much sense, because if there were multiple lists (which i doubt for this application), they should be disposed one after the other. And not one after creating the new buffer. The other thing is even stranger:
02-01 21:22:43.820: I/jPCT-AE(15360): Visibility lists disposed!
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 1
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 2
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 3
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 4
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 5
02-01 21:22:43.820: I/jPCT-AE(15360): Unloaded texture: 6
02-01 21:22:43.820: I/jPCT-AE(15360): All texture data unloaded from gpu!
02-01 21:22:43.820: I/jPCT-AE(15360): Disposing VBOs!
02-01 21:22:43.820: I/jPCT-AE(15360): Renderer disposed!
02-01 21:22:43.820: I/jPCT-AE(15360): Static references cleared...
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL vendor: NVIDIA Corporation
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL renderer: NVIDIA AP
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL version: OpenGL ES-CM 1.1
02-01 21:22:43.820: I/jPCT-AE(15360): OpenGL renderer initialized (using 2 texture stages)
02-01 21:22:43.820: I/jPCT-AE(15360): Memory usage before compacting: 9503 KB used out of 9607 KB
....
02-01 21:22:43.910: I/jPCT-AE(15360): Visibility lists disposed!
02-01 21:22:43.970: D/dalvikvm(15360): GC_CONCURRENT freed 0K, 5% free 10201K/10695K, paused 4ms+3ms
02-01 21:22:43.970: I/jPCT-AE(15360): New texture's id is: 7
02-01 21:22:43.970: I/jPCT-AE(15360): New texture uploaded: com.threed.jpct.Texture@4069f520 in thread Thread[GLThread 9,5,main]
02-01 21:22:43.970: I/jPCT-AE(15360): [ 1328091763987 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): New texture's id is: 8
02-01 21:22:43.980: I/jPCT-AE(15360): New texture uploaded: com.threed.jpct.Texture@4069a658 in thread Thread[GLThread 9,5,main]
02-01 21:22:43.980: I/jPCT-AE(15360): [ 1328091763994 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): [ 1328091763995 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): Object 'object6' shares VBOs with object 'object5'
02-01 21:22:43.980: I/jPCT-AE(15360): [ 1328091763996 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): Object 'object9' shares VBOs with object 'object5'
02-01 21:22:43.980: I/jPCT-AE(15360): [ 1328091763996 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): Object 'object10' shares VBOs with object 'object5'
02-01 21:22:43.980: I/jPCT-AE(15360): [ 1328091763997 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): Object 'object11' shares VBOs with object 'object5'
02-01 21:22:43.980: I/jPCT-AE(15360): [ 1328091763997 ] - WARNING: OpenGL context has changed...trying to recover...
02-01 21:22:43.980: I/jPCT-AE(15360): Object 'object12' shares VBOs with object 'object5'
...
02-01 21:22:44.320: I/jPCT-AE(15360): Memory usage after compacting: 9099 KB used out of 11335 KB
Focus on the messages from the MemoryHelper: How can this be? How can the MemoryHelper start to compact (which happens in your code after creating the new FrameBuffer, which the log reflects)...but then, a draw-call seems to happen as all data is uploaded to the GPU again and THEN the MemoryHelper finishes it's work. This can only happen if the onDraw-call and the call to onSurfaceChanged happen in different threads. Can it be that onDraw() runs in the old thread but with a new FrameBuffer? So that the engine detects that it should upload the texture again (because of the context change) but it does so in the wrong thread?
This doesn't happen in my tests...everything runs in order as it's supposed to run. I suggest to add two different outputs: In addition to the one that logs the start of a method, also log the end. And also log start and end of onDraw(). In addition, log the actual thread at least in onDraw() and in the onSurface...()-methods. Maybe that will help...