dreamland-mud / dreamland_code Goto Github PK
View Code? Open in Web Editor NEWDreamLand MUD: server code
License: GNU General Public License v3.0
DreamLand MUD: server code
License: GNU General Public License v3.0
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
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.
TODO
#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.
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
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".
(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
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.
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 PCharacter
s, 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".
#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.
(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.
Two issues combined here.
[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.
Need to provide fenia core in dump format, and run db_restore as part of the configuration.
Исторически собирался под mingw компилятор. Нужно попытаться восстановить хотя бы старую сборку.
По поводу IDE - сейчас он как-то работает с эклипсом для С++, с включенным плагином CDT. Возможно, есть лучшие варианты IDE для проектов с autotools.
Review current Readme.en for gaps
Include mudjs instructions
Briefly describe VSCode setup
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>},
Добрый день!
Предельно извиняюсь, что пишу сюда, но увидел Руффину в администраторах мадконнектора. Надеюсь, не ошибся. Там проблема: я не могу войти, так как мне пишется, что "Вы превысили максимально допустимое количество попыток входа. Теперь, кроме имени пользователя и пароля, вы должны ввести код подтверждения, показанный на картинке ниже.", но никаких картинок нет. Также не могу зарегистрировать нового пользователя и связаться с KadVar, так как регистрация закрыта, для неё надо писать ему на почту, которая у него в профиле, а профили не видны незарегистрированным пользователям. Помогите, пожалуйста, разобраться. Мой ник на форуме: Харч.
[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 ....
A quick test has showed that XML documents with accented characters are not read and converted properly:
https://cdn.discordapp.com/attachments/658821972427407390/664977824993509376/1.png
https://cdn.discordapp.com/attachments/658821972427407390/664977813245263892/2.png
(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.
Edit and translate https://github.com/dreamland-mud/dreamland_code/wiki/WSL---VSCode by Tahi.
affected
field can be NULL in many situations.
[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">'...
after saving took the form:
<reg name="^@">'...
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.