• 0

# ObjectDB in HiveExt.ini : server crash

## Question

Hello,

I would like to thank whoever will take time to read/reply this topic. English isn't my native langage so please apologize the medium English level.

Running into global FPS issues, we were told that using a remote database to store the objects table can greatly increase server performance. I would like to know if there is any documentation about the [ObjectDB] section of the HiveExt.ini file, couldn't find any on the forum nor on the wiki.

If there isn't such information source, your help would be precious.

The server is running properly using local only database. When using the remote database (for the objects table), the Hive window crashes randomly after loading successfuly from 1200 up to 2200 table lines (out of 6300), without any error in the window : it stops on the green line describing the latest loaded item and a Windows error pops up "arma2oaserver.exe has stopped working".

However, the RPT file does indicate an error message (sorry, couldn't find any Spoiler feature) :

Exception code: C0000005 ACCESS_VIOLATION at 72C4E832
Allocator: C:\Program Files (x86)\Steam\SteamApps\common\Arma 2 Operation Arrowhead\Expansion\beta\dll\tbb4malloc_bi.dll
graphics:  No
resolution:  160x120x32
Mods: @DayZ_Epoch_Server
Distribution: 0
Version 1.62.103718
file:     DayZ_Epoch_11
world:    Chernarus
Prev. code bytes: 10 C7 84 24 C0 00 00 00 00 00 00 00 8B 4C 24 14
Fault code bytes: 8B 11 8B 42 04 FF D0 84 C0 0F 84 A0 08 00 00 8B

Registers:
EAX:009AC360 EBX:00000000
ECX:00000000 EDX:00000400
ESI:2888FD00 EDI:72D56C34
CS:EIP:0023:72C4E832
SS:ESP:002B:009AC34C  EBP:009AC410
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00010202
=======================================================
note: Minidump has been generated into the file instance_11_Chernarus\arma2oaserver.mdmp


Here is the beginning of the HiveExt.log, the only thing that could be incriminated (to my eyes) is the mySQL versions not matching

2013-10-29 17:02:33 HiveExt: [Information] HiveExt f20dbd5b6625
2013-10-29 17:02:33 Database: [Information] Connected to MySQL database localhost:3306/dayz_epoch client ver: 5.5.28 server ver: 5.6.14
2013-10-29 17:02:33 Database: [Information] Connected to MySQL database localhost:3306/dayz_epoch client ver: 5.5.28 server ver: 5.6.14
2013-10-29 17:02:33 ObjectDB: [Information] Connected to MySQL database 37.x.x.221:3306/objetsepoch client ver: 5.5.28 server ver: 5.5.22-0ubuntu1
2013-10-29 17:02:33 ObjectDB: [Information] Connected to MySQL database 37.x.x.221:3306/objetsepoch client ver: 5.5.28 server ver: 5.5.22-0ubuntu1
2013-10-29 17:02:33 HiveExt: [Information] Method: 307 Params:
2013-10-29 17:02:33 HiveExt: [Information] Result: ["PASS",[2013,10,29,15,2]]
2013-10-29 17:02:33 HiveExt: [Information] Method: 302 Params: 11:
2013-10-29 17:02:34 HiveExt: [Information] Result: ["ObjectStreamStart",6228]
2013-10-29 17:02:34 HiveExt: [Information] Method: 302 Params: 11:
2013-10-29 17:02:34 HiveExt: [Information] Result: ["OBJ","151","datsun1_civil_1_open","0",[180,[9428.25,8853.65,0.001]],[[[],[]],[[],[]],[[],[]]],[["motor",0.307],["sklo predni P",0.678],["sklo predni L",0.368],["karoserie",0.721],["palivo",0.799],["wheel_1_1_steering",1],["wheel_2_1_steering",1],["wheel_2_4_steering",1],["wheel_1_3_steering",1],["wheel_2_3_steering",1],["wheel_1_2_steering",1],["wheel_2_2_steering",1],["glass1",0.755],["glass2",0.915],["glass3",0.235],["glass4",0.125]],0.893,0.004]
2013-10-29 17:02:34 HiveExt: [Information] Method: 302 Params: 11:
2013-10-29 17:02:34 HiveExt: [Information] Result: ["OBJ","166","VIL_kia_ceeddwa6","0",[104,[9547.6,8114.17,-0.008]],[[[],[]],[[],[]],[[],[]]],[["sklo_p",1],["sklo_p1",1],["sklo_p2",1],["sklo_p3",1],["sklo_l1",1],["sklo_l2",1],["sklo_l3",1],["sklo_z",1],["levy predni tlumic",1],["levy zadni tlumic",1],["pravy predni tlumic",1],["pravy zadni tlumic",1],["motor",0.525],["sklo predni P",1],["sklo predni L",1],["karoserie",1],["palivo",0.406]],0.05,0.02]
2013-10-29 17:02:34 HiveExt: [Information] Method: 302 Params: 11:
2013-10-29 17:02:34 HiveExt: [Information] Result: ["OBJ","310","TT650_TK_CIV_EP1","0",[233,[4560.38,6361.18,0.021]],[[[],[]],[[],[]],[[],[]]],[["engine",0.986],["sklo predni P",5.669e-04],["sklo predni L",0.963],["karoserie",0.879],["palivo",0.573],["Pravy predni tlumic",0.928],["Pravy zadni tlumic",0.802]],0.258,0.0]



Googling the RPT errors gave poor results. However there is a list of what I tried :

• set arama2oaserver.exe as Win XP SP3 compatible and gave it administrator privileges -> same issue
• created new admin account and launched server from it -> same issue
• increased the remote mySQL server caches in the my.conf file, however it roughly takes 3% of the CPU and 42MB of RAM -> same issue
• deleted the DLL folder and DLL files located in the root ArmA II installation folder then redownloaded them using Steam's file check -> same issue
• added latest C and C++ connectors for mySQL (libmysql.dll and mysqlcppconn.dll) in the root game directory -> same issue
• installed test DayZ server on my home computer -> same issue (this test tends to prove that the virtualized os has not to be incriminated)

Here are the specs :

Dedicated server with DayZ
CPU : Intel Xeon E3-1225 V2 @3.2GHz with 8MB cache
RAM : 4x 4GB
Disks : two 1TB disks, with main mounting point using raid1 for 100GB, then raid0 for the rest
Host OS : Debian 7.2 64bits, installed on raid1
Invited OS : Windows 7 Pro 64bits, using VMWare Workstation 10, virtual disk on raid0
MySQL database : MySQL Workbench 6.0
Bandwidth : 100Mbps

VPS with Mumble, the website and the remote database
CPU : vCore 2GHz
RAM : 512Mo
OS : Ubuntu Server 12.04 32bits
MySQL database : standalone MySQL 5.5.22
Bandwidth : 100 Mbps

Testing home server :
CPU : Intel i7-930 @2.8GHz with 8MB cache
RAM : 3x 2GB
Disk : Seagate Barracuda 2TB @7200rpm with 64MB cache
OS : Windows 7 Home Premium 64bits
MySQL database : MySQL 5.6.12 from the latest WAMP 64bits package
Bandwidth : 50Mbps down, 5Mbps up


Kind regards,
Arnaud

## Recommended Posts

• 0

Hi Arnoud, just going to put some bits in, no solutions though.

1] Is the remote DB for the objects local to the game server ?

2] I tried hosting on Win7 home 64bits, and gave up after a lot of problems getting things to work (on 32 bits now).

3] Did you try to run the DB completely on the remote server (I do that, with flawless results).

##### Share on other sites
• 0

Hello nedfox,

There are two servers : one dedicated with DayZ in Roubaix4 datacenter (hosted by OVH, France) and the second one is a VPS in Roubaix2 datacenter (same provider). They are not the same physical machine.

I didn't try running the DB remotly only, will give it a try tonight, thanks for the advice.

Arnaud

• 0

Help ?

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×

• ### Similar Content

• Im setting up a new epoch 1.0.6 server with very little addons/mods installed, and when i was testing i realized safes/plotpoles/walls etc werent saving to the server database. Anyone got any ideas what might be wrong?
• By Achef
Greetings!
So I recently started up in a new host and haven't gotten to make the server run, found that a ca/modules bis_fnc issue is recurring but doesn't affect players when running coop missions like the default arma 2 oa ones, but when trying with Epoch hive won't connect/start despite being configured.
Hive error
Meanwhile at line 23...

I'm still bad with Pastebin, sorry.

This error has been chasing me for 2 days now
• By Sandbird
Dayz.Epoch.1.0.62 - 3d.Editor.Live.Mission with Database interaction

What is this
A custom mission file for the purpose of testing/writing scripts for DayZ Epoch without the need of a server.
It emulates the dayz_server and dayz_mission files, so you can write scripts using the 3d editor. No need to use a dayz_server for debugging anymore. We all know how time consuming that is.

Features
Full Database integration (yes thats right... [:)] I would suggest to have a maximum of 100 objects in your object_data table for faster results.
Took 5 min to load 10000 objs from my real database, so also make sure you dont go crazy with the MaxVehicleLimit, MaxDynamicDebris values in the init.sqf Fully working GUI, zombies, hit registration, addactions, everything! Write code and execute it on the fly. No need to start a server and join with a client to test things. 100% of your scripts will work! (dynamic weather, default loadouts, custom scripts etc) 2 setups. A default 3d editor player with a default loadout or a Real database character based on your UID Includes most of BIS_fnc functions, so actions like BIS_fn_invAdd will work (i've added most common ones...more included though...check details bellow.) Everything works...when i say everything i mean EVERYTHING !. (Spawning objects on mission start, traders (buy/sell), maintenance, character update, events, stats...etc) New Features!
All .FSM files have been converted to .SQF meaning the mission acts as a full fledged server / client merge. New character creation has been ignored though, so the server expects that the client that is about to connect exists in the database. The server will start, wait for a 'fake client connection to happen' (you pressing the Preview button), and then it will load your character from the database, spawn Hive objects and create new based on your MaxVehicleLimit values etc, then initialize the events and finally spawn the character to his worldspace location. Use AdminTools to spawn any Perm, Temp vehicle you want, including buildings, crates etc. Building objects is working as expected with a little AddAction trick. Unfortunately the primary display (eg: findDisplay 46) isnt working inside the editor. That means that building stuff or placing objects is very hard to do since we can't 'capture' keystrokes.
Further details below after the Installation instructions. Arma2Net is not allowed by Battleye anymore, so i am using extDB3 now. Requirements:
A mysql server on the same machine as your Arma2 editor. Well...a remote PC would work as well...just make sure YOU ARE NOT using your original database. Make a copy of it!. This mission will interact with your database !
If you don't have a mysql server on your pc...i suggest you get WampServer. It's the easiest php/mysql server out there.
Installation
When the game launches, press Alt+E, select Chernarus, then Load mission 3d.live1062.DayzEpochTemplate.Chernarus
Open \My Documents\ArmA 2\missions\3d.live1062.DayzEpochTemplate.Chernarus\init.sqf
Go to line 61 and start editing the values there. DB_NAME is the name of your database (same as the extdb3 config file).
Add your PlayerUID value (same as the DB one) in line 72. (That the player you want to load from the database)
Depending which map you want to use, you have to change the dayZ_instance variable and also the MarkerP values (line 62) based on your mission.sqm file. Its for the Hive to spawn random vehicles, roadblocks and mines at proper locations based on the map. Just read the comments there for how to get the values. Its really simple. Just copy paste stuff from your mission.sqm file.
Default setup vs Database setup
There are 2 ways of initializing your player.
A live database player based on his UID in the character_data table (coordinates, medical states, inventory etc) A default 3d editor player with a basic loadout. (Ignores Hive Loadouts and initial vehicle spawns) Default setup (extDB3)
[DefaultTruePreMadeFalse = true;] This option is now the default one, because it's so much easier to set up, plus a lot of things have changed in the 1062 Epoch version. I couldn't totally separate the server files from the client files, so in the end a Database is necessary for the Mission files to work properly. To setup your character with this method, leave DefaultTruePreMadeFalse to true;  Everything is database based..so no need to do anything else. The mission will start with all your stats, inventory, conditions and spawn you where your world coordinates are. Premade Character Setup
[DefaultTruePreMadeFalse = false;] This setup DOES NOT initialize the character based on a database entry, or does any HIVE related queries on mission start. (like load objects etc). Instead it uses some premade stats that you set, and only uses the Database on updates (buy vehicles etc) The loadout of the player is set in the init.sqf in line 77
player setVariable ["CharacterID", "1", true]; // Set here the characterID of the player. It can be anything...just leave it 1 if you want. player setVariable ["playerUID", "111111", true]; // Set here the playerUID of the player you want to have. player setVariable["Z_globalVariable", 100000]; player setVariable["Z_BankVariable", 100000]; player setVariable["Z_MoneyVariable", 100000]; player setVariable["humanity", 11000]; player setVariable["humanKills", 10]; player setVariable["banditKills", 20]; player setVariable["zombieKills", 30]; player setVariable ["friendlies", ["222222","333333"], true]; //Both DZE_Friends and this must be set for friendlies to work properly DZE_Friends = ["222222","333333"]; Everything else should work fine with the database....like traders, salvaging, etc...Unfortunately since the 1062 ver had many differences from the 1051 one, i couldn't really make this Profile option a standalone one, without any Database interaction. So in order for you to minimize any errors in the log file, i would suggest you load my sample db file provided, and also change those CharacterID and PlayerUID values in PLAYER_Data and CHARACTER_Data tables to the ones you set up here, just in case.... The Premade character setup is for people that want to fast debug a script they are making and don't want to wait for the Hive to load all map objects and authenticate the player first. Further Details to change (in both Profile Cases)
The description.ext, mission.sqf, mission.biedi files have your character's name in them. Just search for the word Sandbird in all of them and change it according to the PlayerName value you have in your Player_DATA table for your PlayerUID value.
Example taken from description.ext. DONT change the actual My_Player text. The mission file needs that string to read what you typed in the name field.
class My_Player { name="Sandbird"; face="Face20"; glasses="None"; speaker="Male01EN"; pitch=1.1; };
Important info
Init.sqf values
DefaultTruePreMadeFalse = true; // True: Read player's data from the database (based on UID), False: the normal player the editor has StaticDayOrDynamic = true; // A static date is set at the bottom of \dayz_server\init\server_function.sqf. Set this to false if you want real time/date inside the mission. DZEdebug = false; // Set to true if you want a more detailed log file Enable Keyboard actions (menu option) // (findDisplay 46) wont work inside the editor. That means that building stuff or placing objects is very hard to do since we cant 'capture' keystrokes. I kinda fixed this with a trick. In order to build something first you have to initiate the building action (holding the object in your hands) and then scroll with your mouse wheel and select Enable Keyboard actions. This will create a layer on your screen capturing your keystrokes thus allowing you to change orientations etc. Pressing ESC twice after and it will close the fake display and return to normal play mode. You will have to do this every time you want to build something. Related to coding
Since the Editor has some limitations because its not a real server some things will never work. For example:
_playerUID = getPlayerUID player; will never work in the editor. To get the _playerUID you have to do this:
_playerUID = player getVariable ["playerUID", 0];
This is the most important thing to remember. Lots of scripts use getPlayerUID. You have to remember to change it every time you want to use it.  Of course the player value is just an example here. If you were inside a loop and it had (getPlayerUID _x) then you have to rewrite it like this: (_x getVariable["PlayerUID",0]) findDisplay 46 does not work in the editor. If you are using/making a script that uses Display 46 try using my Enable Keyboard action. It might work in your case. publicvariableServercommands don't exist in the editor. There is no server to accept the command. If you want to use addpublicvariableeventhandler you can do it with call/spawn commands. You can find the handlers usually in the PublicEH.sqf.
Example: PVDZE_plr_Save = [player,dayz_Magazines,false,true]; publicVariable "PVDZE_plr_Save"; can be written like:
PVDZE_plr_Save = [player,dayz_Magazines,false,true]; publicVariableServer "PVDZE_plr_Save"; // keeping this so when you move the code to the real server you remember to add it. [player,dayz_Magazines,false,true] spawn server_playerSync; // what to call is usually inside publicEH.sqf. In this case search for PVDZE_plr_Save in the PublicEH file and check the call it makes in the end. You could also change the publicVariableServer to publicVariable. That should work inside the editor. But keep in mind these changes wont work on the live server, since one command broadcasts something to the server while the other just to the client running it. I would suggest you keep the original value and do the PublicEH call instead, marking it down with some debug comments next to it, so when you are done and want to transfer the files to your live server you just remove the call and everything should work as expected.
Don't forget to change the paths when you are adding addons to test/modify them. For example, notice the differences here:  player_switchModel = compile preprocessFileLineNumbers "dayz_code\compile\player_switchModel.sqf"; player_checkStealth = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_checkStealth.sqf"; The first line will look up for player_switchModel.sqf inside the editor mission files, while the 2nd one will go to the @Dayz_Epoch map file and get the .sqf file. Same thing applies for the dayz_server files (server_functions.sqf). Once you are done with your script and you have added new compile lines, you need to fix them back to their proper values before you upload them to your live server.
If you are missing any BIS_fnc functions then check the folder dayz_code\system\functions and see if it's available there to include it in the compiles.sqf. Set DZEdebug = true;  in the init.sqf. And ALWAYS check your RPT log file for debugging. Its located at : %AppData%\Local\ArmA 2 OA folder. Related to mission file included
You'll notice when you start the mission there are 2 bots standing there. If you double click the soldier you'll see that he initiates this script scripts\BotInit.sqf. I left that in purpose in case you want to do some scripting that requires 'another player', and you want to initialize the fake player like that. The other bot can be deleted. I just left it there because i was testing a Tag Friendly script, and needed a 3rd 'player' that has me as a friend. I've included a simple Fireworks script i made a while back only this time i used some better effects taken from aliascartoons work. Just add a 'SMAW_HEDP' into your inventory and right click on it to test it out. Here is how the old script used to look like Fireworks. Also you'll find a little 'hat script' in the files, just right click a 'IRStrobe' item to add a hat to your player. Both script were written inside the editor using the mission file above...just a small example to show you how easy it is to write code there. The @extDB folder contains a folder called debug_files. These .dlls (when replaced the ones provided) activate a more detailed log file (found under arma 2 operation arrowhead\logs folder). It will show ALL MySQL queries going in/out of the database. Very useful if you are running any custom SQL queries and the RTP log file isn't enough.
Final Notes
These are heavily modified files...Dont overwrite them with your own files. Add to them instead of replacing them.
If you are writing scripts that dont require the server to restart, then you can just go to 2D editor and press Preview again after you make the changes. No need to hit Restart. As long as you are doing changes that doesnt affect the Hive loading you can basically run things on the fly. For example in the init.sqf at the bottom i added a Add BankMonkey example. That command just loads the custom\money.sqf and shows a simple extDB3 example on how to select/update a DB table. Since this command doesnt require the server to restart, you can just hit Preview, test things out, and if you want to make changes, go back to 2D Editor, edit your changes in the money.sqf file and hit Preview again. No need to hit Restart and wait for the dayz_server functions to do their thing again.
The whole purpose of this project was to not waste any more time trying to code on this god forsaken Arma engine.
And a personal note....You will NEVER find an easier way to code stuff for Dayz....period. This is the fastest way to write code and see it in action.

Hope this code will help you write code faster and easier !
### Credits
This mission file would not be possible without the help of these addons/people

DayzEpochTeam | http://epochmod.com
killzonekid | http://killzonekid.com
extDB3 | https://bitbucket.org/torndeco/extdb3/wiki/Home
ebayShopper | https://github.com/ebayShopper/TestKit
• By Warburgg
Hello everyone. I would like to ask for help regarding a problem I have been having on my server.
Items stored in the vault are not being stored in the SQL database.
I have tested with the safe and the lockbox and both are not working but with the tent it works and saves the items in the database after the server restart.
ArmA2OA.RPT: https://pastebin.com/X2cT7BBU
arma2oaserve.RPT: https://pastebin.com/rqFNGbDy
server_log.txt: https://pastebin.com/ZVWAzgNP
Please help me. My players do not want to stay on the server because of this and if I remove the safe and leave only the tent (which is what saves the items) they will cry hahaha
• Supporters
×
×
• Create New...