Git Product home page Git Product logo

dreamland_code's Issues

Travis improvements

  • use sendemail package to submit failure notifications to custom address, as built-in functionality doesn't work

  • configure PVS build and run it when TRAVIS_EVENT_TYPE=="cron"
    https://www.viva64.com/en/b/0661/

  • submit PVS report either by email or by uploading to gh-pages

cadmus character showing lots of russian text

Hiya,

I am testing out the docker image for local development, and when I log in cadmus, which is supposed to be an english character, I still get lots of russian text. Am I confused about how this works? If there's no way to turn off russian text, is there a way to make an english only version? I ask because I'm considering using dreamland for a base for a mud I'm working on, but I know nothing about russian so having russian text to translate would be a pain.

Thanks!

-Michael.

CRASH: Implicit copy constructor results in uninitialized variable (gcc9)

#0  0x00007f7f6a048cc5 in DoorFunc::operator() (exit=0x2071b90, room=0x208a210, this=0x7fffd7220748) at ../../../DL/plug-ins/traverse/wanderer.cpp:74
74	        return behavior->canWander( room, exit );
(gdb) bt
#0  0x00007f7f6a048cc5 in DoorFunc::operator() (exit=0x2071b90, room=0x208a210, this=0x7fffd7220748) at ../../../DL/plug-ins/traverse/wanderer.cpp:74
#1  RoomRoadsIterator<DoorFunc, ExtraExitFunc, PortalFunc>::operator()<BroadTraverse<RoomTraverseTraits, RoomRoadsIterator<DoorFunc, ExtraExitFunc, PortalFunc>, PathWithDepthComplete>::AddHook> (act=..., room=0x208a210, this=0x7fffd7220690) at ../../../DL/plug-ins/traverse/roomtraverse.h:129
#2  BroadTraverse<RoomTraverseTraits, RoomRoadsIterator<DoorFunc, ExtraExitFunc, PortalFunc>, PathWithDepthComplete>::operator() (top=<optimized out>, start=0x7fffd7220760, 
    this=0x7fffd7220690) at ../../../DL/plug-ins/traverse/traverse.h:67
#3  room_traverse<RoomRoadsIterator<DoorFunc, ExtraExitFunc, PortalFunc>, PathWithDepthComplete> (src=<optimized out>, iter=..., complete=..., limit=limit@entry=5000)
    at ../../../DL/plug-ins/traverse/roomtraverse.h:189
#4  0x00007f7f6a048084 in Wanderer::pathWithDepth (this=this@entry=0x4c442a0, start_room=<optimized out>, depth=depth@entry=20, limit=limit@entry=5000)
    at ../../../DL/plug-ins/traverse/wanderer.cpp:182
(gdb) p *behavior
$1 = {<MobileBehavior> = <invalid address>, path = std::__cxx11::list<error reading variable: Cannot access memory at address 0x38b94c0dfff00b>}

DoorFunc::behavior field was not initialized and contained garbage. Issue discovered when porting to gcc 9.

Telegram: messages not escaped properly

  • MUD tags such as {hl are not stripped, i.e.
    {hlhttps://google.com{x should become https://google.com, instead it becomes lhttps://google.com

  • Single asterix and underscore interfere with Markdown syntax, causing error 400 "Bad Request: can't parse entities: Can't find end of the entity starting at byte offset ...".

This doesn't work: https://github.com/dreamland-mud/dreamland_code
This works fine: https://github.com/dreamland-mud/dreamland\\_code

Fenia api: some fields are duplicated on the web

For 'Structures API' on https://dreamland.rocks/feniaapi.html, the table for read/write fields looks like this:

bitvector | какие биты добавятся полю, указанному в where
bitvector | какие биты добавятся полю, указанному в where
duration | длительность, -1 для вечных аффектов
duration | длительность, -1 для вечных аффектов

For 'Character API', read-write fields are listed first as "ro", then as "rw".

Crash: charmed mob checked as stealquest participant

(gdb) bt
#0  0x00007fdec0000650 in ?? ()
#1  0x00007fded2d5fb1c in Character::canCarryNumber (this=this@entry=0x5556c89e84e0) at ../../../../dreamland_code/plug-ins/anatolia/core/character.cpp:21
#2  0x00007fdec9ded644 in StealQuest::checkMobileClient (this=<optimized out>, pch=<optimized out>, mob=0x5556c89e84e0)
    at ../../../../dreamland_code/plug-ins/quest/stealquest/stealquest.cpp:356
#3  0x00007fdec9ded462 in StealQuest::checkItem (this=0x5556bc4c9940, pch=0x7fdeb4002810, obj=0x5556c89e8190)
    at ../../../../dreamland_code/plug-ins/quest/stealquest/stealquest.cpp:307
#4  0x00007fded0e8b6ae in ItemQuestModel::getRandomItem (this=this@entry=0x5556bc4c9940, pch=pch@entry=0x7fdeb4002810)
    at ../../../../dreamland_code/plug-ins/quest/core/questmodels.cpp:360
#5  0x00007fdec9defb9f in StealQuest::create (this=0x5556bc4c9940, pch=0x7fdeb4002810, questman=0x5556ca3724a0)
    at ../../../../dreamland_code/plug-ins/quest/stealquest/stealquest.cpp:50
#6  0x00007fdec9deacec in QuestRegistrator<StealQuest>::createQuest (this=<optimized out>, pch=0x7fdeb4002810, questor=0x5556ca3724a0)
    at ../../../../dreamland_code/src/lang/pointer.h:186
#7  0x00007fdecac05710 in Questor::doRequest (this=0x5556c10df348, client=client@entry=0x7fdeb4002810, arg=...) at ../../../../dreamland_code/src/lang/pointer.h:192
#8  0x00007fdecac102b4 in CQuest::run (this=<optimized out>, ch=<optimized out>, constArguments=...) at ../../../../dreamland_code/src/lang/pointer.h:186
#9  0x00007fded510a320 in InterpretHandler::handle (this=<optimized out>, d=0x5556c070df30, arg=<optimized out>) at ../../../dreamland_code/src/lang/pointer.h:186

(gdb) p victim->pIndexData->vnum
$11 = 11881

(gdb) p obj->pIndexData->vnum
$15 = 11805

(gdb) p victim->affected_by.value
$22 = 557696
(sanctuary infrared sneak flying; victim->affected only has sanctuary)

(gdb) p victim->master
$25 = (Character *) 0x7fdec011b7d0 // low-level player

Deadlock in Berkley DB

An attempt to sync Fenia DB coincided with periodic archive script that runs db_checkpoint -1 && db_archive -d && db_dump fenia |bzip2 > ../fenia.dump.tbz2. Resulting stack trace:

#0  0x00007f45bb2359f3 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007f45bba008ab in __db_pthread_mutex_lock () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#2  0x00007f45bbaa858f in __lock_get_internal () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#3  0x00007f45bbaa8ef6 in __lock_get () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#4  0x00007f45bbad3c7a in __db_lget () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#5  0x00007f45bba1d01c in __bam_search () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#6  0x00007f45bba084db in ?? () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#7  0x00007f45bba0cbeb in ?? () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#8  0x00007f45bbac12b1 in __dbc_iput () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#9  0x00007f45bbabc460 in __db_put () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#10 0x00007f45bbad1f9b in __db_put_pp () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#11 0x00007f45bb9f386f in Db::put(DbTxn*, Dbt*, Dbt*, unsigned int) () from /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
#12 0x00007f45bc7df762 in DbContext::put (this=this@entry=0x557f6ba58eb8, k=<optimized out>, k@entry=4179398893, dat=...) at ../../../dreamland_code/src/io/txncontext.cpp:383
#13 0x00007f45bc798112 in Scripting::Object::Manager::put (this=this@entry=0x557f6ba58eb8, id=4179398893, 
    s="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<object type=\"ObjectWrapper\">\n  <guts>\n    <temperature>\n      <backref regtype=\"object\">-115568403</backref>\n      <target regtype=\"number\">20</target>\n    </te"...) at ../../../dreamland_code/src/fenia/object.cpp:221
#14 0x00007f45bc7997ea in Scripting::Object::save (this=0x557f70c4de40) at ../../../dreamland_code/src/fenia/object.cpp:124
#15 0x00007f45bc799cf9 in Scripting::Object::Manager::syncPut (this=this@entry=0x557f6ba58eb8, finishAt=finishAt@entry=0x7ffeab07afd0)
    at ../../../dreamland_code/src/fenia/object.cpp:245
#16 0x00007f45bc799db3 in Scripting::Object::Manager::sync (this=0x557f6ba58eb8, tickEnd=<optimized out>) at ../../../dreamland_code/src/fenia/object.cpp:304
#17 0x00007f45bcae924a in DreamLand::pulseEnd (this=this@entry=0x7ffeab07b100) at ../../dreamland_code/src/dreamland.cpp:200
#18 0x00007f45bcae9744 in DreamLand::run (this=0x7ffeab07b100) at ../../dreamland_code/src/dreamland.cpp:169
#19 0x0000557f69ca8f84 in main (argc=<optimized out>, argv=0x7ffeab07b5d8) at ../../dreamland_code/src/main.cpp:38

Lock wasn't released even after db_dump process was killed externally.

Get rid of "player memory" abstraction

No need to keep only a subset of player info in memory anymore, can keep all profile fields. PCharacterManager will hold a map of offline and online PCharacters, classes such as PCMemoryInterface and PCharacterMemory will become obsolete.
As additional bonus, consider keeping all player items (inv, eq) in memory, introducing a concept of "offline object".

Crash: invalid virtual table when -Og option is used

#0  0x00007f9057ab36e3 in UndefinedOneHit::damEffectSlice (
    this=this@entry=0x7ffc2aa42e3e)
    at ../../../dreamland_code/plug-ins/fight/onehit_undef.cpp:1355
#1  0x00007f9057ab45a9 in UndefinedOneHit::postDamageEffects (
    this=0x7ffc2aa42e3e)
    at ../../../dreamland_code/plug-ins/fight/onehit_undef.cpp:173
#2  0x00007f9057aaba9e in OneHit::hit (this=0x7ffc2aa52e40)
    at ../../../dreamland_code/plug-ins/fight/onehit.cpp:78
#3  0x00007f9057a8eaa0 in one_hit_nocatch (ch=<optimized out>, 
    victim=victim@entry=0x7f90440025f0, secondary=secondary@entry=false)
    at ../../../dreamland_code/plug-ins/fight/fight.cpp:339
#4  0x00007f9057a8efd6 in one_hit (ch=<optimized out>, 
    victim=victim@entry=0x7f90440025f0, secondary=secondary@entry=false)
    at ../../../dreamland_code/plug-ins/fight/fight.cpp:345

*this at frame 0:

$2 = {
  <WeaponOneHit> = {
    <OneHit> = {
      <Damage> = <invalid address>, 
      members of OneHit: 
      _vptr.OneHit = 0x0, 
      skill = 0, 
      thac0 = 0, 
      victim_ac = 0, 
      orig_dam = 0
    }, 
    members of WeaponOneHit: 
    wield = 0x0, 
    secondary = false, 
    weapon_sn = 0, 
    weaponSkill = 0x0, 
    attack = 0
  }, <No data fields>}
(gdb) 

*this at frame 1:

3 = {
  <WeaponOneHit> = {
    <OneHit> = {
      <Damage> = <invalid address>, 
      members of OneHit: 
      _vptr.OneHit = 0x0, 
      skill = 0, 
      thac0 = 0, 
      victim_ac = 0, 
      orig_dam = 0
    }, 
    members of WeaponOneHit: 
    wield = 0x0, 
    secondary = false, 
    weapon_sn = 0, 
    weaponSkill = 0x0, 
    attack = 0
  }, <No data fields>}
(gdb) 

*this at frame 3:

$4 = {
  <Damage> = {
    _vptr.Damage = 0x7f9057ccfa38 <vtable for UndefinedOneHit+232>, 
    ch = 0x5629daa73490, 
    victim = 0x7f90440025f0, 
    killer = 0x5629daa73490, 
    dam_type = 1, 
    dam = 71, 
    immune = false, 
    dam_flag = 1
  }, 
  members of OneHit: 
  _vptr.OneHit = 0x7f9057ccf968 <vtable for UndefinedOneHit+24>, 
  skill = 120, 
  thac0 = -69, 
  victim_ac = -54, 
  orig_dam = 133
}

The error seems to be gone with -O2 but still happen with -O2.

Crash: hierophant speech prog for empty skill group

(gdb) bt
#0  0x00007feae9277e97 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007feae9279801 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007feae98ce957 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007feae98d4ab6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007feae98d4af1 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007feae98d4d24 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007feae98d0855 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x00007feada776822 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::at (__n=0, this=0x7fff8eebd6c0)
    at /usr/include/c++/7/bits/basic_string.h:1098
#8  Hierophant::tell (this=0x557e967cf1d0, victim=<optimized out>, speech=<optimized out>) at ../../../dreamland_code/plug-ins/misc_behaviors/hierophant.cpp:123
#9  0x00007feae0c0b523 in mprog_speech (msg=0x557e92afb7d0 "\336\324\317 \325\315\305\305\324 \315\317\312 \320\305\324\317\315\305", <incomplete sequence \303>, 
    talker=0x7fead0096d80, rch=0x557e967ce670) at ../../../dreamland_code/plug-ins/communication/channels.cpp:187
#10 SpeechChannel::triggers (this=<optimized out>, ch=0x7fead0096d80, msg=...) at ../../../dreamland_code/plug-ins/communication/channels.cpp:211
#11 0x00007feae0c01ce1 in GlobalChannel::run (this=0x557e8eaa9c10, ch=0x7fead0096d80, arg=...) at ../../../dreamland_code/plug-ins/communication/globalchannel.cpp:124
#12 0x00007feae677027b in InterpretHandler::handle (this=<optimized out>, d=<optimized out>, arg=<optimized out>)
    at ../../../dreamland_code/plug-ins/iomanager/interprethandler.cpp:174

Buggy code:

    for (GroupsMap::iterator i = groups.begin( ); i != groups.end( ); i++) {
        SkillGroup *group = skillGroupManager->find( i->first );
        DLString g = group->getShortDescr( );

        buf << "{G" << g.at( 0 ) << "{g" << g.substr( 1 ) << "{g:{x" << endl;
...

Finding out which pet was it, to recreate locally: pet and other helpful local variables were optimized out, so have to scroll through all people in the room to reach the pet:

(gdb) p ch->in_room->people->next_in_room->next_in_room->next_in_room->next_in_room->next_in_room->name
$11 = {<DLString> = {<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >> = "legend beer lvivske \320\311\327\317 \314\330\327\317\327\323\313\317\305 \314\305\307\305\316\304\301", static emptyString = {<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >> = "", 

After adding debugging output, the failing skill group appeared to be weaponsmaster. It never intended to contain spells before and lacked shortDescr field.

Fenia core grows too big, lock table out of entries

Two issues combined here.

  1. FeniaSpellContext objects were never destroyed. Each casted spell resulted in new object in the fenia db. Number of objects in the fenia database grew up to 180k pretty fast. This leak was fixed in 66f7c51
  2. Initial number of BDB lock entries is too small to load 180k records, resulting in this error during DL startup:
[Mar 04 02:31:58]:N: Loading DbContext: fenia:objects...
BDB2055 Lock table is out of available lock entries
[Mar 04 02:32:06]:E: Dbc::get: Cannot allocate memory:
[Mar 04 02:32:06]:N: Total 175695 records loaded

Lock table size can be increased by calling DbEnv::set_lk_max_locks method, see this discussion for reference.

Поддержка IDE и сборка под Windows

Исторически собирался под mingw компилятор. Нужно попытаться восстановить хотя бы старую сборку.

По поводу IDE - сейчас он как-то работает с эклипсом для С++, с включенным плагином CDT. Возможно, есть лучшие варианты IDE для проектов с autotools.

Crash: lightning shield damage accesses invalid pointer

In lightning shield entry method, paf->type and paf->level are referenced after memory where paf points to was already de-allocated inside Room::affectRemove.

Backtrace:

#0  0x00007f64478bee97 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f64478c0801 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007f6447f15957 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007f6447f1bab6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007f6447f1baf1 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007f6447f1c8bf in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007f643cb33799 in GlobalReferenceBase::operator int const& (this=0x5647fa3e4fe8) at ../../../dreamland_code/src/gref/globalreference.h:16
#7  AffectHandlerTemplate<dummyAffect_LightningShield_TypeName>::entry (this=<optimized out>, room=0x5647f60966f0, ch=0x5647fb5a33c0, paf=0x5647fa3e4fc0)
    at ../../../dreamland_code/plug-ins/groups/class_warlock.cpp:413
#8  0x00007f6443608757 in rafprog_entry (ch=0x5647fb5a33c0, room=0x5647f60966f0) at ../../../dreamland_code/plug-ins/movement/movement.cpp:149
#9  Movement::callProgsFinish (this=0x7ffd0424a260, wch=0x5647fb5a33c0) at ../../../dreamland_code/plug-ins/movement/movement.cpp:265
#10 0x00007f6443603cbb in Movement::moveRecursive (this=0x7ffd0424a260) at ../../../dreamland_code/plug-ins/movement/movement.cpp:73
#11 0x00007f6443603a11 in Movement::move (this=0x7ffd0424a260) at ../../../dreamland_code/plug-ins/movement/movement.cpp:46
#12 0x00007f64436038d1 in move_char (ch=0x5647fb5a33c0, door=door@entry=3, argument=argument@entry=0x0) at ../../../dreamland_code/plug-ins/movement/move_utils.cpp:35
#13 0x00007f6441293ff8 in BasicMobileBehavior::move (this=this@entry=0x5647fb5a3be0, d=d@entry=3, pexit=pexit@entry=0x5647f5c53898, whosHunted=whosHunted@entry=0x7f64180be610)
    at ../../../dreamland_code/plug-ins/ai/tracking.cpp:123
#14 0x00007f644129423e in BasicMobileBehavior::trackLastFought (this=0x5647fb5a3be0, wch=0x7f64180be610) at ../../../dreamland_code/plug-ins/ai/tracking.cpp:113
#15 0x00007f644214282a in track_update () at ../../../dreamland_code/plug-ins/updates/update.cpp:1253

Here's how paf looks like:

(gdb) p *paf
...
 type = warning: can't find linker symbol for virtual table for `XMLSkillReference' value
warning:   found `construction vtable for GlobalReference<SkillManager, Skill>-in-XMLSkillReference' instead
{
    <SkillReference> = {
      <GlobalReference<SkillManager, Skill>> = {
        <GlobalReferenceBase> = {
          _vptr.GlobalReferenceBase = 0x7f644853b958 <vtable for GlobalReferenceBase+16>, 
          name = {
            <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >> = "\000\000\000\000\000\000\000\000g shield", 
            members of DLString: 
            static emptyString = <same as static member of an already seen type>
          }, 
          index = 104
        }, 
        members of GlobalReference<SkillManager, Skill>: 
        _vptr.GlobalReference = 0x7f64488a7858 <construction vtable for GlobalReference<SkillManager, Skill>-in-XMLSkillReference+24>
      }, <No data fields>}, 
    <XMLGlobalReference> = {
      <XMLVariable> = {
        <DLObject> = {
          _vptr.DLObject = 0x10, 
          linkCount = 30
        }, 
        members of XMLVariable: 
        _vptr.XMLVariable = 0x7f64488a7758 <construction vtable for XMLVariable-in-XMLSkillReference+24>
      }, <No data fields>}, <No data fields>}, 

Mudconnector

Добрый день!

Предельно извиняюсь, что пишу сюда, но увидел Руффину в администраторах мадконнектора. Надеюсь, не ошибся. Там проблема: я не могу войти, так как мне пишется, что "Вы превысили максимально допустимое количество попыток входа. Теперь, кроме имени пользователя и пароля, вы должны ввести код подтверждения, показанный на картинке ниже.", но никаких картинок нет. Также не могу зарегистрировать нового пользователя и связаться с KadVar, так как регистрация закрыта, для неё надо писать ему на почту, которая у него в профиле, а профили не видны незарегистрированным пользователям. Помогите, пожалуйста, разобраться. Мой ник на форуме: Харч.

Too many open fies

[May 14 20:32:44]:E: Error while saving .xml: Unable to open output stream for './var/db/player/XCg0XUP'
[May 14 20:32:52]:S: (Too many open files) DLFileOp::open ....

Crash: double affect_remove called for charm person affect

(gdb) bt
#0  0x00000000000000f1 in ?? ()
#1  0x00007f0b77e5ee20 in affect_remove (ch=ch@entry=0x559c63bc93d0, paf=<optimized out>, paf@entry=0x559c59103330) at ../../../dreamland_code/plug-ins/loadsave/affects.cpp:448
#2  0x00007f0b74904cb4 in char_update_affects (ch=ch@entry=0x559c63bc93d0) at ../../../dreamland_code/plug-ins/updates/update.cpp:1438
#3  0x00007f0b74909575 in char_update () at ../../../dreamland_code/plug-ins/updates/update.cpp:420
#4  0x00007f0b7490a5c3 in update_handler () at ../../../dreamland_code/plug-ins/updates/update.cpp:1023
#5  0x00007f0b7491e726 in virtual thunk to AnatoliaUpdate::run() () from ./libexec/plugins/libupdates.so
#6  0x00007f0b7aeda778 in SchedulerList::tick (this=this@entry=0x559c592f8f38) at ../../../dreamland_code/src/scheduler/../lang/pointer.h:186
#7  0x00007f0b7aedacbd in SchedulerPriorityMap::tick (this=0x559c58a262c0) at ../../../dreamland_code/src/scheduler/schedulerprioritymap.cpp:18
#8  0x00007f0b7aeda39a in Scheduler::tick (this=0x559c527f39c0) at ../../../dreamland_code/src/scheduler/scheduler.cpp:53
#9  0x00007f0b7b1cb4fe in DreamLand::run (this=0x7fffd6a99730) at ../../dreamland_code/src/lang/pointer.h:186
#10 0x0000559c50c201f6 in main (argc=2, argv=0x7fffd6a99bf8) at ../../dreamland_code/src/main.cpp:37

(gdb) p ch->affected
$2 = {<std::__cxx11::list<Affect*, std::allocator<Affect*> >> = std::__cxx11::list = {[0] = 0x559c58dbcd50, [1] = 0x559c58859020, [2] = 0x559c63bc9b20, [3] = 0x559c63bc9a30}, <No data fields>}

(gdb) p ((Affect *)(0x559c58dbcd50))->type
$4 = {<SkillReference> = {<GlobalReference<SkillManager, Skill>> = {<GlobalReferenceBase> = {_vptr.GlobalReferenceBase = 0x7f0b7b4a79b8 <vtable for XMLSkillReference+152>, name = {<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >> = "inspire",  static emptyString = {<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >> = ""...

 p ((Affect *)(0x559c59103330))->type
$9 = warning: can't find linker symbol for virtual table for `XMLSkillReference' value
warning:   found `construction vtable for GlobalReference<SkillManager, Skill>-in-XMLSkillReference' instead
{<SkillReference> = {<GlobalReference<SkillManager, Skill>> = {<GlobalReferenceBase> = {_vptr.GlobalReferenceBase = 0x7f0b7b1249b8 <vtable for GlobalReferenceBase+16>, 
        name = {<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >> = "charm person", 

This trace shows that the mob had 4 affects left: 2 inspire affects, prot evil and sanctuary, and the one being removed in this update call was "charm person" affect. Its removal handler called follower_stop() which in turn called affect_strip(gsn_charm_person) thus calling double deallocate for the same pointer.

Test checkboxes in markdown

Solar System Exploration, 1950s – 1960s

  • Venus
  • Earth (Orbit/Moon)
  • Mars
  • Jupiter
  • Mercury
  • Saturn
  • Uranus
  • Neptune
  • Comet Haley

BUG: Unparsed node <DLString::toInteger> on player load

[Nov 23 15:01:37]:N: [wiznet:sites] [email protected] has connected.
[Nov 23 15:01:37]:W: Unparsed node <DLString::toInteger> <
[Nov 23 15:01:37]:N: Loading Gosha.
[Nov 23 15:01:37]:N: Gosha has race troll and level 100

In player profile, what used to look like:

 <node name="edstate" type="XMLAttributeEditorState">
       <regs>
         <reg name="0">&apos;...

after saving took the form:

        <reg name="^@">&apos;...

CRASH: in local version after about half an hour of work

Can be recreated with dreamland_world version b3e10c192ad2cace6f84df13e18551c882b80fde , dreamland_code version e99591ebbe14ab308f3a248a6dfdb33bc97812e4, all built according to instructions for local dev.

# ulimit -c unlimited
# ./bin/dreamland 
...
[Jan 19 09:40:01]:N: [wiznet:ticks] AREA & ROOM TICK!
[Jan 19 09:40:10]:N: [wiznet:ticks] CHAR TICK!
[Jan 19 09:41:10]:N: [wiznet:ticks] CHAR TICK!
[Jan 19 09:41:50]:N: [wiznet:ticks] AREA & ROOM TICK!
Segmentation fault (core dumped)
# gdb ./bin/dreamland core*
#0  create_item_for_mob (pReset=pReset@entry=0x1092e10, pObjIndex=0x0, mob=mob@entry=0x1178540, verbose=verbose@entry=true)
    at ../../../dreamland_code/plug-ins/updates/update_areas.cpp:238
238	    if (pObjIndex->limit != -1 && pObjIndex->count >= pObjIndex->limit) 
(gdb) bt
#0  create_item_for_mob (pReset=pReset@entry=0x1092e10, pObjIndex=0x0, mob=mob@entry=0x1178540, verbose=verbose@entry=true)
    at ../../../dreamland_code/plug-ins/updates/update_areas.cpp:238
#1  0x00007fefb66c7252 in reset_one_mob (mob=0x1178540) at ../../../dreamland_code/plug-ins/updates/update_areas.cpp:349
#2  0x00007fefb66c75b3 in reset_room_mobs (pRoom=pRoom@entry=0x1093070) at ../../../dreamland_code/plug-ins/updates/update_areas.cpp:410
#3  0x00007fefb66c791f in reset_room (pRoom=0x1093070, flags=flags@entry=0) at ../../../dreamland_code/plug-ins/updates/update_areas.cpp:485
#4  0x00007fefb66c7ef9 in reset_area (pArea=0x120f170, flags=flags@entry=0) at ../../../dreamland_code/plug-ins/updates/update_areas.cpp:677

A null pObjIndex is passed to create_item_for_mob function. Likely cause: in the limited set of areas shipped for local dev, an item vnum is missing but is configured to be reset somewhere. Let's see what are room, obj and mob vnums:

gdb) set print pretty
(gdb) set print static no
(gdb) p mob->pIndexData->vnum
$5 = 5311
gdb) p mob->in_room->vnum
$6 = 5317
(gdb) p pReset->arg1
$8 = 601

Item 601 belongs to ofcol2.are which is not included in area.local package. To fix this crash, need to check for null obj index before calling create_item_for_mob function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.