Crash when entering rooms

Issue #71 resolved
Stefan Schwarzburg created an issue

The ryzom client crashes when I try to enter a room.

Steps to reproduce: - walk or run in a room (tested with my apartement in davae and with the overseer room in davae) - the client crashes or hangs after the last element in the loading circle - on restart of the client I start at the respawn point between Hidden Source and Desert

This bug appeared yesterday after my upgrade of Ubuntu to 13.10. It was not present in the version before!

The bug is reproducable for me (5 times in a row, it never worked to enter the room).

My system: Ubuntu 13.10 Client from ppa:ryzom-isv/ppa: 2.1.0.3639-0ubuntu2

3.7 GB RAM Intel® Core™ i7-3517U CPU @ 1.90GHz × 4 Intel® Ivybridge Mobile 64-bit

Comments (40)

  1. Cédric Ochs

    Thanks for your report, I'll try to play with a version with debug symbols :)

    Edit : In fact, a lot of code changed since the previous version and I'm not surprised there are more bugs :(

  2. Stefan Schwarzburg reporter

    I'm happy to provide more information, do more tests, if you tell me what to do... Just let me know what could help!

  3. Meelis Mägi

    It crashes in commitCamera(), sky->getScene() (probably returns null)

    Hackish workaround is to to check the getScene() and flip s_SkyMode back to OldSky on error.

    .. or alternatively flip s_SkyMode=OldSky in updateWeather() where Indoor is detected and sky is set to NewMode.

  4. Cédric Ochs

    Thanks nimetu :) I think I'll let Kaetemi apply the fix, because he's more aware of this part than me :)

  5. Tierry Anthony

    If it may help, the client also closes for me running under Quantal but only when entering apartment or GH. It is fine for any other room access.

  6. Stefano Incontri

    This happens on both ubuntu 12.04 and 13.10 but only with the compiled client, and just since 2 or 3 weeks. These are the last client.log lines describing the problem before crashing:

    2013/10/21 10:31:26 WRN 2181363456 <Unknown> async_file_manager_3d.cpp 343 run : Couldn't load 'dummy_ascenseur_tr.shape'
    2013/10/21 10:31:26 WRN 2801252224 <Unknown> path.cpp 520 lookup : PATH: File (dummy_ascenseur_tr.shape) not found (dummy_ascenseur_tr.shape)
    2013/10/21 10:31:26 WRN 2801252224 <Unknown> shape_bank.cpp 479 load : CShapeBank::load() : Can't open file dummy_ascenseur_tr.shape
    2013/10/21 10:31:26 WRN 2801252224 <Unknown> scene_group.cpp 580 addToScene : Not found 'Dummy_ascenseur_tr.shape' file
    2013/10/21 10:31:26 WRN 2801252224 <Unknown> async_file_manager_3d.cpp 76 loadMesh : Can't load an empty filename
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> path.cpp 518 lookup : PATH: Try to lookup for an empty filename. TODO: check why.
    2013/10/21 10:31:27 INF 2181363456 <Unknown> common.cpp 585 Exception : Exception will be launched: Path not found for
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> async_file_manager_3d.cpp 343 run : Couldn't load ''
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> path.cpp 520 lookup : PATH: File (dummy_ascenseur_tr.shape) not found (dummy_ascenseur_tr.shape)
    2013/10/21 10:31:27 INF 2181363456 <Unknown> common.cpp 585 Exception : Exception will be launched: Path not found for dummy_ascenseur_tr.shape
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> async_file_manager_3d.cpp 343 run : Couldn't load 'dummy_ascenseur_tr.shape'
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> path.cpp 520 lookup : PATH: File (dummy_ascenseur_tr.shape) not found (dummy_ascenseur_tr.shape)
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> shape_bank.cpp 479 load : CShapeBank::load() : Can't open file dummy_ascenseur_tr.shape
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> scene_group.cpp 580 addToScene : Not found 'Dummy_ascenseur_tr.shape' file
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> async_file_manager_3d.cpp 76 loadMesh : Can't load an empty filename
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> path.cpp 518 lookup : PATH: Try to lookup for an empty filename. TODO: check why.
    2013/10/21 10:31:27 INF 2181363456 <Unknown> common.cpp 585 Exception : Exception will be launched: Path not found for
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> async_file_manager_3d.cpp 343 run : Couldn't load ''
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> path.cpp 520 lookup : PATH: File (dummy_ascenseur_tr.shape) not found (dummy_ascenseur_tr.shape)
    2013/10/21 10:31:27 INF 2181363456 <Unknown> common.cpp 585 Exception : Exception will be launched: Path not found for dummy_ascenseur_tr.shape
    2013/10/21 10:31:27 WRN 2181363456 <Unknown> async_file_manager_3d.cpp 343 run : Couldn't load 'dummy_ascenseur_tr.shape'
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> path.cpp 520 lookup : PATH: File (dummy_ascenseur_tr.shape) not found (dummy_ascenseur_tr.shape)
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> shape_bank.cpp 479 load : CShapeBank::load() : Can't open file dummy_ascenseur_tr.shape
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> scene_group.cpp 580 addToScene : Not found 'Dummy_ascenseur_tr.shape' file
    2013/10/21 10:31:27 INF 2801252224 <Unknown> net_manager.cpp 1651 impulseTPCommon2 : impulseTP: teleport acknowledge 'TP:ACK' sent.
    2013/10/21 10:31:27 WRN 2801252224 <Unknown> input.cpp 141 InitMouseWithCursor : mouse pos 0.482430,0.566406
    
  7. Stefano Incontri

    Any news about this issue? It's quite important since in new ubuntu 13.10 64 bit the standard precompiled client doesnt work anymore, since there's only the 32 bit version. Thanks!

  8. Tierry Anthony

    I have spent some time trying to discover why getScene() returns an incorrect value in the updateWeather() procedure, without any luck. However the code below will correct the problem until a correct solution is found.

    //Existing main_loop.cpp code
        // Update new sky
        if (ContinentMngr.cur() && !ContinentMngr.cur()->Indoor)
        {
            if(Driver->getPolygonMode() == UDriver::Filled)
            {
                if (Filter3D[FilterSky])
                {
                    CSky &sky = ContinentMngr.cur()->CurrentSky;
                    if (sky.getScene())
                    {
                        s_SkyMode = NewSky;
                        sky.getScene()->animate(TimeInSec-FirstTimeInSec);
                        // Setup the sky camera
                        preRenderNewSky();
                    }
                    else
                    {
                        s_SkyMode = OldSky;
                    }
                }
            }
        }
    
    //Inserted code to reset s_SkyMode if Continent is indoors.
        if (ContinentMngr.cur() && ContinentMngr.cur()->Indoor)
        {
            if(Driver->getPolygonMode() == UDriver::Filled)
            {
                if (Filter3D[FilterSky])
                {
                    CSky &sky = ContinentMngr.cur()->CurrentSky;
                    s_SkyMode = OldSky;
                }
            }
        }
    //End of inserted code
    }
    
  9. Angus70

    I am also experiencing the problem, trying to enter a room or GH. But I have another side effect, when I relog, missions I did have to be done again. I am on ubuntu 13.10

  10. Angus70

    Here is my crash report -> seems to be the ryzom for 12.10 in 13.10

    isassembly:
     => 0x971469 <_Z12commitCamerav+185>:   mov    (%rdi),%rax
        0x97146c <_Z12commitCamerav+188>:   callq  *0x48(%rax)
        0x97146f <_Z12commitCamerav+191>:   mov    0xa30(%rbx),%rbx
        0x971476 <_Z12commitCamerav+198>:   mov    %rax,(%rsp)
        0x97147a <_Z12commitCamerav+202>:   mov    0x152afcf(%rip),%rdi        # 0x1e9c450 <Scene>
        0x971481 <_Z12commitCamerav+209>:   mov    (%rbx),%rax
        0x971484 <_Z12commitCamerav+212>:   mov    0x50(%rax),%rbp
        0x971488 <_Z12commitCamerav+216>:   mov    (%rdi),%rax
        0x97148b <_Z12commitCamerav+219>:   callq  *0x58(%rax)
        0x97148e <_Z12commitCamerav+222>:   lea    0x30(%rsp),%rsi
        0x971493 <_Z12commitCamerav+227>:   movq   %xmm0,0x30(%rsp)
        0x971499 <_Z12commitCamerav+233>:   mov    %rbx,%rdi
        0x97149c <_Z12commitCamerav+236>:   movq   %xmm1,0x38(%rsp)
        0x9714a2 <_Z12commitCamerav+242>:   callq  *%rbp
        0x9714a4 <_Z12commitCamerav+244>:   mov    $0x4,%edx
        0x9714a9 <_Z12commitCamerav+249>:   xor    %esi,%esi
    InstallationDate: Installed on 2013-04-02 (252 days ago)
    InstallationMedia: Ubuntu 12.10 "Quantal Quetzal" - Release amd64 (20121017.5)
    MarkForUpload: True
    NonfreeKernelModules: wl nvidia
    Package: ryzom 2.1.0.3639-0ubuntu2 [origin: LP-PPA-ryzom-isv]
    PackageArchitecture: amd64
    ProcVersionSignature: Ubuntu 3.11.0-14.21-generic 3.11.7
    Registers:
     rax            0x9322e01   154283521
     rbx            0x81d3bb0   136133552
     rcx            0x7ffffec9baa0  140737468021408
     rdx            0x444800003e19999a  4920182593944131994
     rsi            0x0 0
     rdi            0x0 0
     rbp            0x0 0x0
     rsp            0x7ffffec9ba30  0x7ffffec9ba30
     r8             0x1e9b1b0   32092592
     r9             0x1 1
     r10            0x0 0
     r11            0xff    255
     r12            0x1 1
     r13            0x5 5
     r14            0x0 0
     r15            0x0 0
     rip            0x971469    0x971469 <commitCamera()+185>
     eflags         0x10206 [ PF IF RF ]
     cs             0x33    51
     ss             0x2b    43
     ds             0x0 0
     es             0x0 0
     fs             0x0 0
     gs             0x0 0
    SegvAnalysis:
     Segfault happened at: 0x971469 <_Z12commitCamerav+185>:    mov    (%rdi),%rax
     PC (0x00971469) ok
     source "(%rdi)" (0x00000000) not located in a known VMA region (needed readable region)!
     destination "%rax" ok
    SegvReason: reading NULL VMA
    SourcePackage: ryzom
    Stacktrace:
     #0  0x0000000000971469 in commitCamera() ()
     No symbol table info available.
     Cannot access memory at address 0x7ffffec9bac8
    StacktraceTop: commitCamera() ()
    Tags: saucy third-party-packages
    ThreadStacktrace:
     .
     Thread 5 (LWP 3473):
     #0  0x00007fb9225a141d in ?? ()
     No symbol table info available.
     .
    Title: ryzom_client crashed with SIGSEGV in commitCamera()
    
  11. Angus70

    Just to say that I applied the "patch" proposed by Tierry Anthony and it worked for me. I think that ubuntu deb was made from ryzom client version with the bug. So I am using now a "patched" compile version instead of the "official" ubuntu one.

  12. Cédric Ochs

    Ok thanks, so if @kaetemi don't have time to fix the bug, I'll temporary apply the fix from @Tissiwau :)

  13. Cédric Ochs

    The temporary fix has been applied, thanks a lot @Tissiwau :)

    Please could you check if it's working now ? :)

  14. Cédric Ochs

    Thank you for the confirmation Nimetu :) I couldn't test it because I have no character with a apartment or a guild hall :( It seems like they increased the price for them and since I have no money... :p

  15. Angus70

    Hi Cedric, You can test simply entering in a building where you have to take an elevator. Some exist like overseer room in Hoi-Cho for example. In fact bug happened each time Ryzom had to load the room. Now it is fixed.

  16. Angus70

    From the first post, it seems that this bug appear with ubuntu 13.10 and personnaly I got it with the ubuntu 13.10 deb package of ryzom, I don't know if there is a difference with the 7.z archive.

  17. Cédric Ochs

    In the 7z archive, the client is almost fully static and all 3rd party libs are compiled in static. The problem with it is that you need to install 32 system bits if you're in 64 bits, they are some problems with some distros, libs are not patched to last versions so they can have serious security problems, etc...

  18. Joseph Marsden

    Hi Cedric. I already have the latest ryzom-isv build, but while the bug was fixed under Ubuntu 13.10 as of December or January, it has now reappeared after an update to Ubuntu 14.04 and the 2.1.0.4658-0ubuntu2 build. Maybe I'm the only one who is having this issue?

  19. Joseph Marsden

    Thanks, Cedric. Just now in trying to get some more precise information, I found (a) no problem getting into guild hall (through orange orb); (b) no problem getting into apartment (which is where the problem appeared yesterday); but then (c) crash/freeze entering overseer room in Natae. Other than now inconsistently happening, it seems to be the same as the prior crash: freeze then crash upon entering building while start-up screen shows; and then on logging back in, momentary look at the room you tried to enter followed by teleport to desert side of desert-forest portal.

    Then on a second run-through, I was able to visit apartment and guild hall without issue, then five different NPC rooms before finally crashing while EXITING the Natae captain of the guards quarters.

    Maybe it's a different problem from the earlier one, which very consistently crashed on entry of a building.

  20. Meelis Mägi

    You need to run ryzom under gdb to get stack trace from the crash. On terminal, run gdb /opt/ryzom/ryzom_client and after it crashes, type bt and copy the lines it gives here.

    If it does not crash, then you can exit gdb using q or ctrl+d. To try again, use r ;-)

  21. Joseph Marsden

    I think this must be a different issue. Latest -isv Ryzom with ubuntu 14.04 crashes often; not often enough to make it unbearable, but noticeably more than previously. The crashes seem to occur when there is presumably a load on the processor -- teleporting or entering/leaving buildings. VERY inconsistent, though; if anything, it might be related to how long the game has been running. Will monitor, and if I think I can reliably induce a crash somehow, I'll get a log.

  22. Angus70

    I just migrated to ubuntu 14.04 and didn't reproduce Joseph Marsden problem. Personnally, I compiled the client myself following procedure on ryzome core. I am on a 64 bits Ubuntu. The problem may come from this, if the ryzom in ubuntu repo was build with some 32 bits libs and use with 64 bits system or the reverse. My 2 cents...

  23. Jan Boon

    Okay, found it, it was one line of code that got missing in a refactoring. Only 9 months behind schedule.

  24. Log in to comment