- Update SqlAsyncTask´s destructor, properly NULLpoint SqlOperation* m_op so other threads can deal with it accordingly.
- Don´t keep NULL´d elements in transaction queues, remove them instead.
This now means you should be able to run a stable server with > 2 MapUpdate threads. Please leave feedback.
Courtesy of click and myself.
--HG--
branch : trunk
- Added blizzlike content, like texts.
- Corrected some spells and timers.
- As i saw in offi can be more than 1 player doing different parts of the chain at the same time.
- Added code to prevent the npc gets out of the ring.
- Added support for The Amphitheater of Anguish: From Beyond.
--HG--
branch : trunk
Remove it from one file and also merge the 2 scripts in one file.
The error message:
ScriptName: 'go_gilded_brazier' already assigned with the same ScriptName, so the script can't work.
--HG--
branch : trunk
The crash was mostly noticable on servers with relatively high MapUpdate Threads, since the window between SqlAsyncTask::call()´s NULLpointer check for m_op and the usage of this pointer was larger when more map threads are calling Database::CommitTransaction()´s and NULLing this pointer.
Fixes crash specified in comment #24 in issue #1259, and most likely will affect other crashes specified there as well.
Courtesy of click and myself, and our lengthy and deep brainstorming session.
--HG--
branch : trunk
This means if that happened the core override the older script.
As a result, the earlier one doesn't work and can't deallocate so generates memory leak.
This commit also fixes memory leaks caused by that.
Valgrind log:
==4753== 354 (312 direct, 42 indirect) bytes in 1 blocks are definitely lost in loss record 1,194 of 1,218
==4753== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==4753== by 0x1039D85: AddSC_go_scripts() (go_scripts.cpp:1015)
==4753== by 0xDC196F: AddScripts() (ScriptLoader.cpp:534)
==4753== by 0xC19943: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==4753== by 0xD1CCAE: World::SetInitialWorldSettings() (World.cpp:1608)
==4753== by 0x9100A6: Master::Run() (Master.cpp:234)
==4753== by 0x90F5D6: main (Main.cpp:146)
--HG--
branch : trunk
Log:
==31592== 312 bytes in 1 blocks are definitely lost in loss record 423 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xFC12AF: AddSC_borean_tundra() (borean_tundra.cpp:2408)
==31592== by 0xDC0BF0: AddScripts() (ScriptLoader.cpp:917)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
--HG--
branch : trunk
Deallocate memory in Free() which allocated by WaypointMgr.
This fixes memory leaks caused by waypoints.
Valgrind log:
==31592== 2,203,488 (59,400 direct, 2,144,088 indirect) bytes in 2,475 blocks are definitely lost in loss record 1,230 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xD0EC23: WaypointStore::Load() (WaypointManager.cpp:70)
==31592== by 0xD1B55D: World::SetInitialWorldSettings() (World.cpp:1565)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 160 bytes in 5 blocks are possibly lost in loss record 10 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xD0EC0D: WaypointStore::Load() (WaypointManager.cpp:67)
==31592== by 0xD1B55D: World::SetInitialWorldSettings() (World.cpp:1565)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 384 bytes in 2 blocks are possibly lost in loss record 285 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xD0F2D4: __gnu_cxx::new_allocator<WaypointData*>::allocate(unsigned long, void const*) (new_allocator.h:92)
==31592== by 0xD0F303: std::_Vector_base<WaypointData*, std::allocator<WaypointData*> >::_M_allocate(unsigned long) (stl_vector.h:144)
==31592== by 0xD0F87B: std::vector<WaypointData*, std::allocator<WaypointData*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<WaypointData**, std::vector<WaypointData*, std::allocator<WaypointData*> > >, WaypointData* const&) (vector.tcc:308)
==31592== by 0xD0F9F7: std::vector<WaypointData*, std::allocator<WaypointData*> >::push_back(WaypointData* const&) (stl_vector.h:694)
==31592== by 0xD0ED0B: WaypointStore::Load() (WaypointManager.cpp:89)
==31592== by 0xD1B55D: World::SetInitialWorldSettings() (World.cpp:1565)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
--HG--
branch : trunk
So fixes memleaks in scripts which scriptname contains the "example" word AND not assigned(ScriptName column in DB) to an object.
This ones fixed: example_creature, example_escort, example_areatrigger, example_item, example_go_teleporter, example_gossip_codebox.
Some valgrind log: :)
==31592== 353 (312 direct, 41 indirect) bytes in 1 blocks are definitely lost in loss record 280 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xEFAC8A: AddSC_example_creature() (example_creature.cpp:286)
==31592== by 0xDC047A: AddScripts() (ScriptLoader.cpp:523)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 351 (312 direct, 39 indirect) bytes in 1 blocks are definitely lost in loss record 281 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xEFB426: AddSC_example_escort() (example_escort.cpp:223)
==31592== by 0xDC047F: AddScripts() (ScriptLoader.cpp:524)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 359 (312 direct, 47 indirect) bytes in 1 blocks are definitely lost in loss record 282 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xEFBCB6: AddSC_example_gossip_codebox() (example_gossip_codebox.cpp:93)
==31592== by 0xDC0484: AddScripts() (ScriptLoader.cpp:525)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 358 (312 direct, 46 indirect) bytes in 1 blocks are definitely lost in loss record 283 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xEFC04B: AddSC_example_misc() (example_misc.cpp:65)
==31592== by 0xDC0489: AddScripts() (ScriptLoader.cpp:526)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 356 (312 direct, 44 indirect) bytes in 1 blocks are definitely lost in loss record 501 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xEFBF96: AddSC_example_misc() (example_misc.cpp:55)
==31592== by 0xDC0489: AddScripts() (ScriptLoader.cpp:526)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
==31592==
==31592==
==31592== 349 (312 direct, 37 indirect) bytes in 1 blocks are definitely lost in loss record 1,209 of 1,232
==31592== at 0x4C2626C: operator new(unsigned long) (vg_replace_malloc.c:230)
==31592== by 0xEFBFDB: AddSC_example_misc() (example_misc.cpp:60)
==31592== by 0xDC0489: AddScripts() (ScriptLoader.cpp:526)
==31592== by 0xC183F3: ScriptMgr::ScriptsInit() (ScriptMgr.cpp:70)
==31592== by 0xD1B75F: World::SetInitialWorldSettings() (World.cpp:1608)
==31592== by 0x90F34E: Master::Run() (Master.cpp:234)
==31592== by 0x90E87E: main (Main.cpp:146)
--HG--
branch : trunk
This get rid of the ¨queue¨ that only supported 1 packet and implement it properly. Meaning no ¨internal¨ packet loss obstructing the client/server I/O.
Apply Trinity code style where applicable.
--HG--
branch : trunk
-players gain xp by killing enemy players (event bonuses not added for now)
-player can switch xp gain on/off by talking to npc Slahtz or Behsten for a fee of 10golds
NOTE: turning off xp gain will turn off ALL xp gains from quests,monsters,pvp,etc
--HG--
branch : trunk
- Get rid of some potential memory leaks and lingering connections issues.
- Code style cleanup where applicable.
Please give proper feedback and let me know how she fares.
--HG--
branch : trunk