ryzom / ryzomcore

Ryzom Core is the open-source project related to the Ryzom game. This community repository is synchronized with the Ryzom Forge repository, based on the Core branch.
https://wiki.ryzom.dev
GNU Affero General Public License v3.0
330 stars 89 forks source link

Crash when entering rooms #71

Closed ryzom-pipeline closed 9 years ago

ryzom-pipeline commented 10 years ago

Original report by Stefan Schwarzburg (Bitbucket: xubuntix, GitHub: xubuntix).


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

Steps to reproduce:

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

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/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 :(

ryzom-pipeline commented 10 years ago

Original comment by Stefan Schwarzburg (Bitbucket: xubuntix, GitHub: xubuntix).


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

ryzom-pipeline commented 10 years ago

Original comment by Meelis Mägi (Bitbucket: [Meelis Mägi](https://bitbucket.org/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.

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


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

ryzom-pipeline commented 10 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


I probably broke this, yes. Will check this on wednesday.

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


Thanks Kaetemi :)

ryzom-pipeline commented 10 years ago

Original comment by Tierry Anthony (Bitbucket: Tissiwau, ).


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.

ryzom-pipeline commented 10 years ago

Original comment by Stefano Incontri (Bitbucket: 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:

#!c++

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
ryzom-pipeline commented 10 years ago

Original comment by Matt Raykowski (Bitbucket: [Matt Raykowski](https://bitbucket.org/Matt Raykowski), ).


Thank you for the detailed report.

ryzom-pipeline commented 10 years ago

Original comment by Stefano Incontri (Bitbucket: 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!

ryzom-pipeline commented 10 years ago

Original comment by Tierry Anthony (Bitbucket: Tissiwau, ).


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.

#!c++

//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
}
ryzom-pipeline commented 10 years ago

Original comment by Angus70 (Bitbucket: 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

ryzom-pipeline commented 10 years ago

Original comment by Angus70 (Bitbucket: Angus70, ).


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

#!c++

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()
ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


Please @kaetemi could you have a look at it ? :)

ryzom-pipeline commented 10 years ago

Original comment by Angus70 (Bitbucket: 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.

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


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

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


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

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

ryzom-pipeline commented 10 years ago

Original comment by Meelis Mägi (Bitbucket: [Meelis Mägi](https://bitbucket.org/Meelis Mägi), ).


this patch seems to work. no crash when entering guild hall

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/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

ryzom-pipeline commented 10 years ago

Original comment by Angus70 (Bitbucket: 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.

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


Thanks for the suggestion Angus70 and for the confirmation too :)

ryzom-pipeline commented 10 years ago

Original comment by Raster Ron (Bitbucket: rasteron, GitHub: rasteron).


Great stuff. BTW, I have tried this old official build (2010) on Ubuntu 12.04 a couple of days ago:

http://sourceforge.net/projects/ryzom/files/ryzom_client.7z/download

and it seems to work without the entering room bug stuff as mentioned by OP.

ryzom-pipeline commented 10 years ago

Original comment by Angus70 (Bitbucket: 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.

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/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...

ryzom-pipeline commented 10 years ago

Original comment by Joseph Marsden (Bitbucket: joseph_marsden, ).


I'm afraid that the workaround is no longer effective under ubuntu 14.04

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


Unfortunately, the workaround was not yet published under Saucy and Trusty in Ubuntu Software Center :(

But you can use this PPA : https://launchpad.net/~ryzom-isv/+archive/ppa

Ryzom package for Ubuntu Software Center is updated from there :)

ryzom-pipeline commented 10 years ago

Original comment by Joseph Marsden (Bitbucket: 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?

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


Hum, very strange, I'll check if the fix is still there. Thanks for noticing that !

ryzom-pipeline commented 10 years ago

Original comment by Cédric Ochs (Bitbucket: [Cédric OCHS](https://bitbucket.org/Cédric OCHS), ).


Or perhaps the bug is occuring somewhere else :(

ryzom-pipeline commented 10 years ago

Original comment by Joseph Marsden (Bitbucket: 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.

ryzom-pipeline commented 10 years ago

Original comment by Meelis Mägi (Bitbucket: [Meelis Mägi](https://bitbucket.org/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 ;-)

ryzom-pipeline commented 10 years ago

Original comment by Joseph Marsden (Bitbucket: 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.

ryzom-pipeline commented 10 years ago

Original comment by Angus70 (Bitbucket: 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...

ryzom-pipeline commented 9 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


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

ryzom-pipeline commented 9 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Fix #71

ryzom-pipeline commented 9 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Please confirm the status of this issue in the latest revision.