Jump to content
Eternal Lands Official Forums
Aislinn

Can't log in - The rules.xml file was not found

Recommended Posts

After rebooting computer after some updates, I can't log in to EL.  I correctly exited the game, typed #exit as I always do, rebooted as I always do, and when I tried to start EL the same way I always do, I get a pop-up window that says:

Quote

[init.c:1089] The rules.xml file was not found.  You will have to redownload your game.

 

There is a rules.xml file, located in ~/el_linux/languages/en/rules.xml  (and one in all of the different language directories) and it looks perfectly normal.  However, my error log shows a lot of additional problems.

Here is my error log  ~/.elc/log/main_b4d81d80.log

 

[2023-07-07 11:47:13, engine/logging.cpp:311] Log started at: Fri Jul  7 11:47:13 2023 EDT
[2023-07-07 11:47:13, engine/logging.cpp:314] version: 1.9.6
[2023-07-07 11:47:13, elconfig.c:2485] Warning: Can't find var 'autoset_def_server_index= 8
', type 2
[2023-07-07 11:47:13, io/elpathwrapper.c:714] Warning: Didn't find your data_dir, using the current directory instead. Please correct this in your el.ini. Given data_dir was: "c:\Program Files\Eternal Lands\/". Using "/home/sb/el_linux".
[2023-07-07 11:47:13, named_colours.cpp:105] Error: void ELGL_Colour::Colour_Container::load_xml() : Can't open file [named_colours.xml]
[2023-07-07 11:47:13, font.cpp:187] Error: Unable to render text with TTF font file '/conkywx/STYLBCC_.ttf'
[2023-07-07 11:47:13, font.cpp:187] Error: Unable to render text with TTF font file '/conkywx/cutouts.ttf'
[2023-07-07 11:47:13, font.cpp:187] Error: Unable to render text with TTF font file '/conkywx/MoonPhases.ttf'
[2023-07-07 11:47:13, font.cpp:187] Error: Unable to render text with TTF font file '/conkywx/Arrows.otf'
[2023-07-07 11:47:13, font.cpp:187] Error: Unable to render text with TTF font file '/conkywx/ConkyWeather.otf'
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read console.xml
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read errors.xml
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read help.xml
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read options.xml
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read spells.xml
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read stats.xml
[2023-07-07 11:47:13, translate.c:2154] Error: Could not read titles.xml
[2023-07-07 11:47:13, interface.c:492] Info: Using hardwired continent overview maps: 2
[2023-07-07 11:47:13, io/elfilewrapper.c:992] Error: Can't open file './shaders/new_water.vert'.
[2023-07-07 11:47:14] Last message repeated 15 times
[2023-07-07 11:47:14, mines.c:207] Error: Error opening mines configuration file: mines.xml: No such file or directory
[2023-07-07 11:47:14, sound.c:5851] Error: Error opening sound configuration file
[2023-07-07 11:47:14, actor_scripts.c:4891] Error: Unable to read actor definition file actor_defs/actor_defs.xml
[2023-07-07 11:47:14, actor_scripts.c:2927] Error: Unable to read emotes definition file emotes.xml
[2023-07-07 11:47:14, missiles.c:942] Error: Unable to read missiles definition file actor_defs/missile_defs.xml
[2023-07-07 11:47:14, json_io.cpp:35] Info: int JSON_IO_Client_State::Client_State::load(const char*):798  [/home/sb/.elc/pet_fox/client_state.json]
[2023-07-07 11:47:14, weather.c:972] Error: Unable to read weather definition file ./weather.xml
[2023-07-07 11:47:14, spells.c:382] Error: Unable to read spells definition file ./spells.xml: No such file or directory
[2023-07-07 11:47:14, spells.c:389] Error: Unable to parse spells definition file ./spells.xml
[2023-07-07 11:47:14, chat.c:1442] Error: Could not load a channel list from file. Using a limited built-in set instead.
[2023-07-07 11:47:14, rules.c:186] Error: An error occured while reading the rules
[2023-07-07 11:47:14, init.c:1086] Error: The rules.xml file was not found. You will have to redownload your game.

Any ideas?

I have no idea why it's trying to read my conky files, those are for another program completely separate from EL...

(I also tried recompiling the client, but I got the same thing)

 

Share this post


Link to post
Share on other sites
1 hour ago, Aislinn said:

[2023-07-07 11:47:13, io/elpathwrapper.c:714] Warning: Didn't find your data_dir, using the current directory instead. Please correct this in your el.ini. Given data_dir was: "c:\Program Files\Eternal Lands\/". Using "/home/sb/el_linux".

This line worries me. It looks as if EL wants to use a Windows path, but iirc you use Linux...

Perhaps do what it says and correct el.ini?

Share this post


Link to post
Share on other sites

Well here's the thing. I don't have an el.ini in ~/el_linux.  I have separate ones for each character in ~/.elc/main or ~/.elc/aisy, etc. 

What's odd is I changed nothing...

 

Quote

This option allows you to specify a directory other than the current directory to load data from.
This needs to be set to where you installed EL.
For Windows users, the default is "c:\Program Files\Eternal Lands\".
For Gentoo users, the ebuild installs in /usr/share/games/eternal-lands.
#data_dir = "/home/sb/el_linux"

 

Also odd in my el.ini is this:

 

Quote

#server_address = game.eternal-lands.com
#server_port = 2001

 

Share this post


Link to post
Share on other sites

If you assume the client is looking for the files in /home/sb/el_linux can you check one of the errored files exists and is readable by the user you run as?

The client looks at various system folders for fonts, I assume that's why the conkeyxy files show in the low.

Share this post


Link to post
Share on other sites
2 hours ago, bluap said:

If you assume the client is looking for the files in /home/sb/el_linux can you check one of the errored files exists and is readable by the user you run as?

The client looks at various system folders for fonts, I assume that's why the conkeyxy files show in the low.

 

rules.xml is in /home/sb/el_linux/languages/en/rules.xml and yes I can access and read it.

spells.xml is in /home/sb/el_linux/spells.xml and yes I can access and read it but it also is in home/sb/el_linux/languages/en/strings where the rest of them are located (I can read these too)

channels.xml

console.xml

errors.xml

help.xml

options.xml

spells.xml

stats.xml

titles.xml

are all in /home/sb/el_linux/languages/en/strings and I can access and read them all.

 

 

Share this post


Link to post
Share on other sites

Perhaps you could try using strace to see what's happening:

strace ./el.x86_64.linux.bin.static  2>&1 | grep console.xml

You may need to install strace.

Share this post


Link to post
Share on other sites

Okay, I rename my clients so I can keep track of them, this is what I get with strace:  (also get the same popup window about rules.xml)


[sb@arch el_linux]$ strace ./el.linux-7-7-23.bin  2>&1 | grep console.xml
newfstatat(AT_FDCWD, "languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
newfstatat(AT_FDCWD, "languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.xz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.gz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.xz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.gz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.xz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.gz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.xz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.gz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.xz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.gz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.xz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.gz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
openat(AT_FDCWD, "./languages/en/strings/console.xml", O_RDONLY) = 6
openat(AT_FDCWD, "./languages/en/strings/console.xml", O_RDONLY) = 6
write(2, "languages/en/strings/console.xml"..., 37languages/en/strings/console.xml:83: ) = 37
newfstatat(AT_FDCWD, "languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
newfstatat(AT_FDCWD, "languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.xz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.gz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.xz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.gz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.xz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.gz", 0x7ffe4f2dc770, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.xz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml.gz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/pet_fox/languages/en/strings/console.xml", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.xz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml.gz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/sb/.elc/updates/1_9_6/languages/en/strings/console.xml", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.xz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml.gz", 0x7ffe4f2dc6e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "./languages/en/strings/console.xml", {st_mode=S_IFREG|0744, st_size=4180, ...}, 0) = 0
openat(AT_FDCWD, "./languages/en/strings/console.xml", O_RDONLY) = 6
openat(AT_FDCWD, "./languages/en/strings/console.xml", O_RDONLY) = 6
write(2, "languages/en/strings/console.xml"..., 37languages/en/strings/console.xml:83: ) = 37

 

Share this post


Link to post
Share on other sites

Looks like its opening.  Perhaps the xml parse fails.  Do the contents look OK?  This is my checksum;

md5sum languages/en/strings/console.xml
b635aa251c0d017e095fba0cc3118bca  languages/en/strings/console.xml

 

Edited by bluap

Share this post


Link to post
Share on other sites
[sb@arch strings]$ md5sum console.xml
b635aa251c0d017e095fba0cc3118bca  console.xml

The contents look okay to me. 

Share this post


Link to post
Share on other sites

Looks like you were right about the xml parsing.  My update today included "upgrading" libxml2 (libxml2-2.11.4-1-x86_64.pkg.tar.zst) and downgrading it to the last version (libxml2-2.10.4-6-x86_64.pkg.tar.zst) lets me log in. 

Son of a gun, I'm so sorry for wasting your time and thank you for trying to help me.

Share this post


Link to post
Share on other sites
16 hours ago, Aislinn said:

Looks like you were right about the xml parsing.  My update today included "upgrading" libxml2 (libxml2-2.11.4-1-x86_64.pkg.tar.zst) and downgrading it to the last version (libxml2-2.10.4-6-x86_64.pkg.tar.zst) lets me log in. 

Son of a gun, I'm so sorry for wasting your time and thank you for trying to help me.

Definitely not wasting time.   I was testing using one of the package builds which works.  But if I compile my own. I have the same problem with the new version of libxml.  I'll look into why that is in case its something we're going in the client that is no longer supported.

Share this post


Link to post
Share on other sites

Just to confirm, Nimbus has the same problem after updating something not related to el and she uses Manjaro linux, which more or less a based on arch. It looks like arch has some incompatibilites right now.

 

BTW: I am trying to build a static binary on my own machine in order to copy this on the Manjaro based system. I am not familiar with that. Could you roughly explain how to get this done? I tried to include "-static" in the c-flags but this leads to errors when linking the binary. What I am doing wrong?

 

EDIT: Now I understand, there is a target called "static" but if I use it, it fails in the linking state because it requires all dependencies as *.a fils which means static libraries. Does it mean I have to rebuild all libs as static before compiling el finally? It seems to be the case. Things are becoming complicated .. ;)

Edited by Erdie

Share this post


Link to post
Share on other sites
On 12/07/2023 at 1:12 PM, Erdie said:

Just to confirm, Nimbus has the same problem after updating something not related to el and she uses Manjaro linux, which more or less a based on arch. It looks like arch has some incompatibilites right now.

The 2.11.x series of libxml2 has new protections for "entity expansion attacks" which we appear to be triggering with the el xml files.  I'm looking into this but cannot find fix a solution so far, it will hit us eventually on other platforms, not just arch based.  There is also a change to the way custom loaders work with libxml2 that triggers another issue that I have fixed (I think).

 

On 12/07/2023 at 1:12 PM, Erdie said:

BTW: I am trying to build a static binary on my own machine in order to copy this on the Manjaro based system. I am not familiar with that. Could you roughly explain how to get this done? I tried to include "-static" in the c-flags but this leads to errors when linking the binary. What I am doing wrong?

Building a static binary unfortunately requires a lot of work as you need to build all the libraries yourself making static versions.  I have scripts to do this and still intended to publish them to my EL build methods repo once they are cleaned up a bit. There is a flatpak package that works on Arch and Manjaro, and other distros, available in the flatpak store.  I publish a development version too (needs updated to the latest git) that you can install by enabling the flatpak beta channel.

Edited by bluap

Share this post


Link to post
Share on other sites

I just figured out that even my Gentoo System has this issue, too. That shows you are right, all distros will have been involved in this. The advantage on my Gentoo is, that I can just downgrade libxml2 and rebuild everything which depends on it more or less automatically. Binary based distros have no chance to fix it.

Share this post


Link to post
Share on other sites

I wonder if the missing xml declaration (below) could cause some of the problems?

<?xml version="1.0" encoding="UTF-8"?>

In my understanding, a valid XML file has to start with such a line. And rules.xml doesn't have it.

 

Share this post


Link to post
Share on other sites
named_colours.xml:24: parser error : Growing input buffer
<colour name="popup.optiontextmouseover" r="1.0" g="1.0" b="1.0" a="1.0"/>
                                                                        ^
languages/en/strings/console.xml:83: parser error : Growing input buffer
     <markpos>markpos</markpos>
                     ^
languages/en/strings/console.xml:83: parser error : Growing input buffer
     <markpos>markpos</markpos>
                     ^
languages/en/strings/errors.xml:168: parser error : Growing input buffer
      <accept>I Accept</accept>
                              ^
languages/en/strings/errors.xml:168: parser error : Growing input buffer
      <accept>I Accept</accept>
                              ^
languages/en/strings/help.xml:139: parser error : Growing input buffer
      <logon>%.*s has logged on.</logon>
                                ^
languages/en/strings/help.xml:139: parser error : Growing input buffer
      <logon>%.*s has logged on.</logon>
                                ^
languages/en/strings/options.xml:302: parser error : Growing input buffer
 Manufacture, Storage and Inventory windows to appear above the map and console.
                                                                               ^
languages/en/strings/options.xml:302: parser error : Growing input buffer
 Manufacture, Storage and Inventory windows to appear above the map and console.
                                                                               ^
languages/en/strings/spells.xml:95: parser error : Growing input buffer
      </remove>
              ^
languages/en/strings/spells.xml:95: parser error : Growing input buffer
      </remove>
              ^
languages/en/strings/stats.xml:157: parser error : Growing input buffer
         <shortname>eng</shortname>
                                  ^
languages/en/strings/stats.xml:157: parser error : Growing input buffer
         <shortname>eng</shortname>
                                  ^
languages/en/strings/titles.xml:44: parser error : Growing input buffer
      <tab_adv_video>Adv Video</tab_adv_video>
                              ^
languages/en/strings/titles.xml:44: parser error : Growing input buffer
      <tab_adv_video>Adv Video</tab_adv_video>
                              ^
mines.xml:18: parser error : Growing input buffer
        <mine id="7" type="Mana drainer">./3dobjects/ward1.e3d</mine>
                                        ^
sound/snds_enviro.xml:498: parser error : Growing input buffer
        <stereo>1</stereo>
                         ^
sound/sound_config.xml:30: parser error : Entity 'snds_enviro' failed to parse
        &snds_enviro;
                     ^
sound/sound_config.xml:321: parser error : Growing input buffer
        <sound name = "Poison">
               ^
actor_defs/player_standard.xml:1: parser error : Growing input buffer
        <ghost>no</ghost>
^
actor_defs/playerav_human_female.xml:84: parser error : Entity 'standard_players' failed to parse
        &standard_players;
                          ^
actor_defs/playerav_human_female.xml:135: parser error : Growing input buffer
                <torso>./meshes/torso_skinhf_tan.dds</torso>
                      ^
actor_defs/actor_defs.xml:141: parser error : Entity 'human_female' failed to parse
        &human_female;
                      ^
actor_defs/actor_defs.xml:233: parser error : Growing input buffer
        &dragon2_gray;
                      ^
emotes.xml:460: parser error : Growing input buffer
        <CAL_emote_sit index="1000">./animations/player_idle1.caf 0</CAL_emote_sit>
        ^
actor_defs/missile_defs.xml:78: parser error : Growing input buffer
  </missile>
           ^
./weather.xml:19: parser error : Growing input buffer
    <density>1.0</density>
                         ^
./spells.xml:361: parser error : Growing input buffer
        <sigil id="21" name="Protection">protection</sigil>
               ^
languages/en/Encyclopedia/index.xml:21: parser error : Growing input buffer
   <Category>Miscellanea</Category>
                                  ^
languages/en/strings/channels.xml:50: parser error : Growing input buffer
        <channel number="4900" name="Russian">Chat in Russian</channel>
                              ^
languages/en/strings/channels.xml:50: parser error : Growing input buffer
        <channel number="4900" name="Russian">Chat in Russian</channel>
                              ^
languages/en/rules.xml:206: parser error : Growing input buffer
eas detailed above, can result in permanent banishment from the forums and game.
                                                                               ^
languages/en/rules.xml:206: parser error : Growing input buffer
eas detailed above, can result in permanent banishment from the forums and game.
                                                                               ^
The rules.xml file was not found. You will have to redownload your game.

also hit this error with >=dev-libs/libxml2-2.11.4::gentoo (v2.10.4 worked fine)

nothing else on system that depends on libxml2 had any problems since update on Jul 10 :<

Share this post


Link to post
Share on other sites

I've been trying to fix this for a while now but so far unable.  As I said above, I think there may be more than one issue.  I've committed the possible fix for reading files but actor defs still fail to load.  I added proper detection of this and a pointer to this thread in the error logging.   I'll keep trying but help from someone more familiar with libxml2 would be great.  I may create an issue on their bug tracker but suspect its and EL problem.

Share this post


Link to post
Share on other sites
12 minutes ago, revi said:

Are you sure all those files are actually valid XML?

A valid xml file should start with


<?xml version="1.0"?>

and several of the EL xml files do not sta

It could be.  I've tried looking at this but I have no idea when its needed.  Adding it to the top of the actor_defs.xml does parse, but we still get the error.

 

I've created an issue on the libxml2 repo.  We may get some pointers there:

https://gitlab.gnome.org/GNOME/libxml2/-/issues/581

Edited by bluap

Share this post


Link to post
Share on other sites

The issue I logged has been looked at and the libxml2 devs have already made a change that should allow us to fix our issue.  The actor defs are tripping the new "Protection against entity expansion attacks" and the change is to allow setting a higher threshold.  I'll test it tomorrow and report here.

https://gitlab.gnome.org/GNOME/libxml2/-/issues/581

 

Share this post


Link to post
Share on other sites

I've tested the new version of the library (2.12 not yet released) and using the new ability to set a higher threshold does fix the problem.  I've committed the change but stick with version 2.10 of libxml2 until 2.12 is released. Version 2.11 will never work and I've made compiling against that version fail.

Edited by bluap

Share this post


Link to post
Share on other sites

That's some good news, thanks bluap for all the work!

Just for testing tried it out with =dev-libs/libxml2-9999 which pulls from git "at the commit:            778cca386dd29893958310576792e08e018f8e23" of libxml2 repo.

 

It compiles fine, but when trying to run el.bin i get error popup with msg from line 4943 in actor_scripts.c,

but without any other errors in console or in ~/.elc/log

4943         FATAL_ERROR_WINDOW("Failed to read actor defs. See logs, going to exit.");

 

Call to read_actor_defs() returns 0.

The "ok" is still == "1" before this code (just at the entrance of else), but is changed to 0 in line 4924 by the parse_actor_defs func. And the "if" at line 4941 triggers:

4922     } else {                                                                    
4923 #ifndef EXT_ACTOR_DICT                                                          
4924         ok = parse_actor_defs (root);                                           
4925 #else // EXT_ACTOR_DICT                                                         
4926         ok = parse_actor_data (root);                                           
4927 #endif // EXT_ACTOR_DICT                                                        
4928     }  


 

Edited by AnnaH

Share this post


Link to post
Share on other sites

That's the commit version I tested with of libxml.  Can you confirm you are using the correct library at runtime?  On Linux that would be ldd on the binary.

Share this post


Link to post
Share on other sites
➜  Eternal-Lands git:(master) ldd el.linux.bin | grep xml
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fab32224000)
➜  Eternal-Lands git:(master) ll /usr/lib64/libxml2*
lrwxrwxrwx 1 root root   17 Aug 23 17:03 /usr/lib64/libxml2.so -> libxml2.so.2.12.0*
lrwxrwxrwx 1 root root   17 Aug 23 17:03 /usr/lib64/libxml2.so.2 -> libxml2.so.2.12.0*
-rwxr-xr-x 1 root root 1.4M Aug 23 17:03 /usr/lib64/libxml2.so.2.12.0*

 

Share this post


Link to post
Share on other sites

I just tested again and it works fine for me.  Sorry to ask but, are you sure you were pointing at the new libxml2 headers when you compiled? If the conditional compiles is not included the higher threshold will not be set in actor_defs.c.  Everything will compile but the defs will not load.

#if LIBXML_VERSION >= 21200
    xmlCtxtSetMaxAmplification (ctxt, 100);
#endif

You can also test the library is working using xmlint:

$ which xmllint
/usr/local/bin/xmllint

$ cd ~/eternallands/actor_defs
xmllint --noent actor_defs.xml
actor_defs.xml:143: parser error : Maximum entity amplification factor exceeded, see xmlCtxtSetMaxAmplification.
	&elf_female;

$ xmllint --noent --max-ampl 100 actor_defs.xml
... outputs the expanded xml

 


 

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×