Anonymous | Login | 2024-11-21 15:40 UTC |
My View | View Issues | Change Log | Roadmap |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0001245 | VCMI | GUI - Adventure Map | public | 2013-03-18 12:49 | 2014-05-30 17:43 | ||||
Reporter | cirdan | ||||||||
Assigned To | Ivan | ||||||||
Priority | normal | Severity | crash | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | x86 | OS | linux | OS Version | |||||
Product Version | 0.92 | ||||||||
Target Version | Fixed in Version | 0.93 | |||||||
Summary | 0001245: Client freeze when visiting hut of the magi | ||||||||
Description | The client freezes when a hero visits a hut of the magi. It does not crash; the UI is simply frozen (unresponsive). This is what I have been able to gather: CGMagi:onHeroVisit (in lib/CObjectHandler.cpp) sends a CenterView packet for each eye of the magi, with a timeout of 2000, and lastly another CenterView packet to restore the view on the hero, but without a timeout, and this seems to confuse the client. Indeed, by tracing through CPlayerInterface::centerView (in client/CPlayerInterface.cpp), the focusTime for this last packet is completely bogus (in the order of the millions), so the client hangs in SDL_delay (I guess it would recover if I left it running for a couple of hours...). The attached patch fixes the bug for me. I am running self-compiled vcmi with gcc-4.7.2 and boost-1.51. | ||||||||
Steps To Reproduce | Visit hut of the magi | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | hutofmagi.diff [^] (308 bytes) 2013-03-18 12:49 [Show Content] | ||||||||
Notes | |
(0003472) Warmonger (administrator) 2013-03-29 17:19 edited on: 2013-03-29 17:20 |
I couldn't reproduce freeze. Also, cv object stores focus time outside the loop, so it should remain initialized. Any details on this issue? CenterView cv; FoWChange fw; cv.player = fw.player = h->tempOwner; showInfoDialog(h,61,soundBase::LIGHTHOUSE); fw.mode = 1; BOOST_FOREACH(auto it, eyelist[subID]) { const CGObjectInstance *eye = cb->getObj(it); cb->getTilesInRange (fw.tiles, eye->pos, 10, h->tempOwner, 1); cb->sendAndApply(&fw); cv.pos = eye->pos; cv.focusTime = 2000; cb->sendAndApply(&cv); } cv.pos = h->getPosition(false); cb->sendAndApply(&cv); |
(0003473) Ivan (developer) 2013-03-29 17:41 |
Judging from code - if there 0 eyes focusTime won't be initialized. Maybe this is where freeze comes from? |
(0003475) Ivan (developer) 2013-03-29 19:16 |
Should be fixed, rev 3298 |
(0003485) cirdan (reporter) 2013-04-01 18:53 |
I agree with your analysis. I was playing Titan's winter, which doesn't have any eye of the magi. Thanks for fixing this. |
Issue History | |||
Date Modified | Username | Field | Change |
2013-03-18 12:49 | cirdan | New Issue | |
2013-03-18 12:49 | cirdan | File Added: hutofmagi.diff | |
2013-03-29 17:19 | Warmonger | Note Added: 0003472 | |
2013-03-29 17:20 | Warmonger | Note Edited: 0003472 | View Revisions |
2013-03-29 17:21 | Warmonger | Assigned To | => Warmonger |
2013-03-29 17:21 | Warmonger | Status | new => feedback |
2013-03-29 17:41 | Ivan | Note Added: 0003473 | |
2013-03-29 19:16 | Ivan | Note Added: 0003475 | |
2013-03-29 19:16 | Ivan | Status | feedback => resolved |
2013-03-29 19:16 | Ivan | Fixed in Version | => 0.93 |
2013-03-29 19:16 | Ivan | Resolution | open => fixed |
2013-03-29 19:16 | Ivan | Assigned To | Warmonger => Ivan |
2013-04-01 18:53 | cirdan | Note Added: 0003485 | |
2014-05-30 17:43 | beegee | Status | resolved => closed |
Copyright © 2000 - 2024 MantisBT Team |