|
|
|
[
Permlink
| « Hide
]
Morgaine Dinova added a comment - 20/Jun/09 09:05 AM - edited
I'll solicit some repros on this one on the mailing list. I'm not seeing the same problem on my Linux machine:
Snowglobe 1.0.2 (2451) Jun 19 2009 19:37:16 (Snowglobe Release) What I am seeing is a repro for SNOW-14 . So, fullscreen is a little messed up, but ymmv on exactly how its messed up. Putting as Snowglobe 1.0 for now. I don't think we'd hold up the release for this, but I'm not going to make that call just yet.
The key fact about this 100% repro for me is that 1.22.11 doesn't suffer it.
What makes 1.22.11 immune? Also, there is a 100% correlation for me between this crash and the crash on UI Size slider change: 1.23.4, Snowglobe 1.0.0 and Snowglobe 1.0.2 all crash while 1.22.11 works fine. What does UI Size slider change have in common with switching to Fullscreen? I have followed the repro and I did not experience a crash on the following platform and viewer:
-------------------------------------------------- Snowglobe 1.0.1 (2446) Jun 19 2009 02:26:09 (Snowglobe Release) Built with MSVC version 1400 You are at 235564.0, 319522.4, 182.6 in Snow Valley Canyon located at sim7566.agni.lindenlab.com (216.82.35.59:13007) CPU: Intel Pentium III/Pentium III Xeon (0.25 micron process) with external L2 cache (3005 MHz) libcurl Version: libcurl/7.18.1 OpenSSL/0.9.8j zlib/1.2.3 Screen settings: 1920 x 1200 @ 32Bits -------------------------------------------------- One remark tho, which is the horrid screen resolution when in Full Screen. I wonder if it is even useful. > I have followed the repro and I did not experience a crash on the following platform and viewer:
The first line of the repro was "Run viewer on a Linux system", so you didn't follow it. Rob did though, and he had no problem on Ubuntu. I'll try to narrow the problem down to syscalls. Log leading up the crash (1.0.2):
2009-06-21T13:06:01Z INFO: changeDisplaySettings: Stopping GL during changeDisplaySettings 2009-06-21T13:06:01Z INFO: stopGL: Shutting down GL... 2009-06-21T13:06:01Z INFO: stopGL: Remaining allocated texture memory: 0 bytes 2009-06-21T13:06:01Z INFO: switchContext: switchContext, fullscreen=1 2009-06-21T13:06:01Z INFO: destroyContext: destroyContext begins 2009-06-21T13:06:01Z INFO: destroyContext: shutdownGL begins 2009-06-21T13:06:01Z INFO: destroyContext: SDL_QuitSS/VID begins 2009-06-21T13:06:01Z INFO: createContext: createContext, fullscreen=1 size=1920x1200 2009-06-21T13:06:01Z INFO: createContext: Compiled against SDL 1.2.5 2009-06-21T13:06:01Z INFO: createContext: Running against SDL 1.2.12 2009-06-21T13:06:01Z INFO: createContext: createContext: setting up fullscreen 1920x1200 2009-06-21T13:06:01Z INFO: createContext: Running at 1920x1200x32 @ -1 2009-06-21T13:06:01Z INFO: x11_detect_VRAM_kb: Looking in /var/log/Xorg.0.log for VRAM info... 2009-06-21T13:06:01Z INFO: createContext: X11 log-parser detected 512MB VRAM. 2009-06-21T13:06:01Z INFO: createContext: GL buffer: 2009-06-21T13:06:01Z INFO: createContext: Red Bits 8 2009-06-21T13:06:01Z INFO: createContext: Green Bits 8 2009-06-21T13:06:01Z INFO: createContext: Blue Bits 8 2009-06-21T13:06:01Z INFO: createContext: Alpha Bits 8 2009-06-21T13:06:01Z INFO: createContext: Depth Bits 24 2009-06-21T13:06:01Z INFO: createContext: Stencil Bits 8 2009-06-21T13:06:01Z INFO: initExtensions: initExtensions() checking shell variables to adjust features... 2009-06-21T13:06:01Z INFO: initExtensions: initExtensions() FramebufferObject-related procs... 2009-06-21T13:06:01Z INFO: initExtensions: initExtensions() OcclusionQuery-related procs... 2009-06-21T13:06:01Z INFO: initExtensions: initExtensions() PointParameters-related procs... 2009-06-21T13:06:01Z INFO: initExtensions: initExtensions() VertexShader-related procs... 2009-06-21T13:06:01Z INFO: changeDisplaySettings: Restoring GL during resolution change 2009-06-21T13:06:01Z INFO: restoreGL: Restoring GL... 2009-06-21T13:06:02Z INFO: createFont: createFont SansSerif size Large style 0 2009-06-21T13:06:02Z INFO: createFont: createFont SansSerif size Huge style 0 2009-06-21T13:06:02Z INFO: restoreGL: ...Restoring GL done 2009-06-21T13:06:02Z INFO: calcDisplayScale: Setting display scale to { 1.59375, 1.32833 } ""*** glibc detected *** bin/snowglobe-do-not-run-directly: free(): invalid next size (fast): 0xaf6d2ec8 *** ======= Backtrace: ========= Only doing my best
Rob: Of course, and much appreciated.
An strace seems to show that the crash happens while GL is loading a Snowglobe font, or just after:
================== 17:41:40.213524 ioctl(15, 0xc098464a, 0xbf983770) = 0 17:41:40.213716 ioctl(15, 0xc0384657, 0xbf983650) = 0 17:41:40.219871 munmap(0xb1153000, 55108) = 0 17:41:40.220021 open("/var/SecondLife/Snowglobe/releases/Snowglobe-i686-1.0.2.2451/fonts/MtBkLfRg.ttf", O_RDONLY) = 50 17:41:40.220104 fcntl64(50, F_SETFD, FD_CLOEXEC) = 0 17:41:40.220141 fstat64(50, {st_mode=S_IFREG|0644, st_size=55108, ...}) = 0 17:41:40.220212 mmap2(NULL, 55108, PROT_READ, MAP_PRIVATE, 50, 0) = 0xb2f20000 17:41:40.220337 close(50) = 0 17:41:40.220545 munmap(0xb10d2000, 528384) = 0 17:41:40.223734 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb227b000 17:41:40.225170 ioctl(15, 0xc098464a, 0xbf983770) = 0 17:41:40.225326 ioctl(15, 0xc0384657, 0xbf983650) = 0 17:41:40.225943 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1c96000 17:41:40.227093 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb16cd000 17:41:40.228642 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb10e0000 17:41:40.229632 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb105f000 17:41:40.231369 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb0951000 17:41:40.232416 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb035c000 17:41:40.234146 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb02db000 17:41:40.235283 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xacf28000 17:41:40.236679 ioctl(15, 0xc098464a, 0xbf983770) = 0 17:41:40.240300 ioctl(15, 0xc0384657, 0xbf983650) = 0 17:41:40.240979 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xacb7f000 17:41:40.241975 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xaa37e000 17:41:40.243602 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7d7f000 17:41:40.244615 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa6a78000 17:41:40.246356 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa627c000 17:41:40.247370 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa61fb000 17:41:40.248886 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa617a000 17:41:40.249942 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa60f9000 17:41:40.251321 ioctl(15, 0xc098464a, 0xbf983770) = 0 17:41:40.251470 ioctl(15, 0xc0384657, 0xbf983650) = 0 17:41:40.252052 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa6078000 17:41:40.253138 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa5a7d000 17:41:40.254778 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa567d000 17:41:40.255834 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa527f000 17:41:40.258389 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa51fe000 17:41:40.259396 mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa517d000 17:41:40.260750 ioctl(15, 0xc098464a, 0xbf983770) = 0 17:41:40.260912 ioctl(15, 0xc0384657, 0xbf983650) = 0 17:41:40.263158 — SIGSEGV (Segmentation fault) @ 0 (0) --- 17:41:40.263252 time(NULL) = 1245602500 17:41:40.263305 stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0 17:41:40.263395 write(2, "2009-06-21T16:41:40Z INFO: do_elf"..., 124) = 124 17:41:40.263489 write(3, "2009-06-21T16:41:40Z INFO: do_elf"..., 124) = 124 ================== The last two lines of strace correspond to this tail end of the logfile: 2009-06-21T16:41:39Z INFO: changeDisplaySettings: Restoring GL during resolution change I'm guessing at a lot of this, but judging by the straces, it seems that there is a significant difference in the memory management model employed by 1.22.11 versus that used in 1.23.4 and in the Snowglobes, in the area of the font loader. 1.22.11 used munmap(2) to totally delete old memory mappings, while the newer viewers use mmap2(2) with MAP_ANONYMOUS to set the old contents to zero followed by some ioctls. It's one of these new ioctls that is crashing with SIGSEGV on my Linux box.
For comparison with the Snowglobe 1.0.2 data in the previous post, here is the corresponding section of strace for 1.22.11 plus its related snippet of log. It shows the same fonts/MtBkLfRg.ttf being loaded (successfully, instead of crashing), and then continuing to load other fonts. ======================= Unfortunately, GL reloads the X11 server's entire font list when the screen mode changes, including any number of system fonts (31 of them in my case). Each machine's font setup is very likely to be different, and hence font memory usage will be too. As a result, I'm not too surprised that Rob's Linux machine behaved differently to mine. This is looking a bit hard to diagnose. I'd like to hear from the viewer experts. PS. Note that the second open(2) call above seems to have concatenated two paths together incorrectly, and of course has found no font file there. That looks like a program bug, although unfortunately it's in the viewer that does NOT crash here. Reproduced on gentoo linux with
Snowglobe 1.0.1 (2446) Jun 19 2009 02:45:20 (Snowglobe Release) Release Notes Built with GCC version 40102 CPU: Intel(R) Pentium(R) M processor 1.80GHz Memory: 882 MB OS Version: Linux 2.6.28-gentoo-r5-ati-fb #5 PREEMPT Sun May 3 12:57:44 CEST 2009 i686 Graphics Card Vendor: ATI Technologies Inc. Graphics Card: ATI MOBILITY RADEON 9600/9700 Series OpenGL Version: 2.1.8543 Release libcurl Version: libcurl/7.16.4 OpenSSL/0.9.7c zlib/1.2.3 c-ares/1.4.0 J2C Decoder Version: KDU Audio Driver Version: OpenAL, version 1.1 / OpenAL Community / OpenAL Soft: ALSA Software on default LLMozLib Version: [LLMediaImplLLMozLib] - 2.01.24837 (Mozilla GRE version 1.8.1.18_0000000000) Maybe this is gentoo specific? Attaching backtrace Moved to VWR at Morgaine's request as it affects the 1.23 release viewer as well as SnowGlobe.
Indeed Boroondas, it might be Gentoo-specific. But I think the first step towards identifying the cause (and whether it is Gentoo-specific) is to discover why the font handling differs so dramatically between 1.22.11 and the later viewers (ie. using completely different system calls as shown above), because that correlates directly with the observed crash behaviour.
What's changed in font handling since 1.22.11? If we knew that, it could lead us to the culprit, since 1.22.11 does not crash. Post script: Merov says that viewers later than 1.22.11 use unicode, which is probably very relevant to this issue. I tried with Snowglobe 1.0.2 on Debian Lenny and got an impressing crash with squares flickering all over the screen, ctrl-alt-backspace needed.
Then I tried 1.23.4 and got no crash. Because the log of the first try was not readable (because of trying on my local opensim and snow-66) I retried with Snowglobe in the betagrid and got this time no crash, retried again on my opensim and got no crash. – libcurl Version: libcurl/7.16.4 OpenSSL/0.9.7c zlib/1.2.3.3 c-ares/1.4.0 Linked to VWR-10131 since that patch on that issue solved some related issues with fonts. Need feedback that it'll help on this issue, too.
This Jira and VWR-14302 (which crashes at the same point) are hard to repro unless you have the same or similar fonts configured in X11 as those who suffer it, which seems common on Gentoo but may be hard to achieve on other distros. I'll try to supply further information on the font environment below, shortly.
Feel free to IM me for more in-depth testing or diagnosis. I'll compile up an instrumentation patch if you have one and want more feedback. (All viewers later than 1.22.11 seem to fail in the same way, including 1.23.4 and all Snowglobe builds, both LL-built and self-built.) I couldn't reproduce the crash I described above, so I assume it was just a coincidence and different from Morgaines (most likely one of the many clients I used the same day poisoned my cache or so).
This problem occurs on Mandriva 2009.1 x86_64 as well. SecondLife-i686-1.22.11.113941 is fine, but SecondLife-i686-1.23.4.123908 crashes when switching to full screen.
Is the a patch for SecondLife-i686-1.23.4.123908 ? I have experienced this on two different machines. Stack trace when running Snowglobe-i686-1.0.3.2537 and trying to change resolutions.
any progress on resolving this bug? I'd really like to know if something is being done.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||