IRIX and Software

GemRB - Page 3

If you don't want to use git, use the tarball from this url, so you'll have the latest changes:
https://github.com/gemrb/gemrb/archive/master.zip

I've committed a modified version of your diff — it's safe only for the cases from the first ifdef. Thanks!
lynx wrote: If you don't want to use git, use the tarball from this url, so you'll have the latest changes:
https://github.com/gemrb/gemrb/archive/master.zip

I've committed a modified version of your diff — it's safe only for the cases from the first ifdef. Thanks!

Thanks Lynx, i know git/mercurial so i've cloned the latest changeset. It does compile more cleanly with MIPSPro, although there are some IRIX mishaps which needs to be fixed manually.

Just giving you the heads up, i have solved all problems and compiled gemRB-0.8.4 with MIPSPro 7.4.4 on my O2 with 6.5.22m. Used vanilla tarball with my own patches, but i can give a diff of my patches to the git version. My first patch was way off especially the stricmp which proved to be a header booboo, so i hope the git version can be cleaned up if all those substitutions are committed.

There were some minor details with including Python c99-style headers and a nasty bug in /usr/include/unistd.h in combination with MIPSPro C++ compiler which makes compiling kind of a challenge. Nothing unsolvable, but i was stumped for a few days.

And oh yeah, attempted tp play Baldur's Gate II Demo windowed on that O2 (R5K@180MHz). It does work, but man that's slow. :o

I will wrap up the patch, show it here with a screenshot and something resembling a package.
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
Awesome Dexter!
I cant wait! hurry hurry! ;)
I know this plays decently on a 400mhz UltraSPARC (Solaris) so Im hoping the same with a >400mhz SGI..
Cool! The goal is to have it compile out of the box, so a diff vs HEAD would be great.
necron2600 wrote: Awesome Dexter!
I cant wait! hurry hurry! ;)
I know this plays decently on a 400mhz UltraSPARC (Solaris) so Im hoping the same with a >400mhz SGI..

I've jumped the gun a bit of stating that i've solved all problems, sorry for that. There are many issues still needing to be resolved, but i do have played the game on my O2, and if it is not crashing, it works \o/


I've completed the nekoware package for gemrb version 0.8.4 and uploaded it to nekoware current. A direct link is ftp://ftp.nekochan.net/pub/downloads/Ne ... .4.tardist

It installs in /usr/nekoware and dependencies are moderate, but you'll need at least:

Code: Select all

neko_python.sw.eoe
neko_sdl.sw.lib
neko_sdl_mixer.sw.lib
neko_openal.sw.lib
neko_zlib.sw.lib
neko_libogg.sw.lib
neko_libvorbis.sw.lib
neko_libiconv.sw.lib

This is beta software because there are crashes and bugs. Beware!

Below are three files necessary for the compilation with MIPSPro 7.4.4m on a O2 with 6.5.22m. I've tried with gcc 4.7.1, but cmake complains about pthread headers, so i stuck with MIPSPro.
You need the latest cmake 2.8 version. I've made a cmake 2.8.12.2 myself in /usr/local and used that, since the neko_cmake versions are too old.

Release notes for the tardist :
neko_gemrb.txt
(2.98 KiB) Downloaded 14 times

patch to 0.8.4 source :
gemrb-0.8.4_irix.patch
(13.2 KiB) Downloaded 14 times

cmake cache file since it has a hard time finding python :
CMakeCache.txt
(20.76 KiB) Downloaded 11 times

For compiling with git HEAD i've made a patch as well
gemrb-git.patch :
gemrb-git_irix.patch
(1.46 KiB) Downloaded 12 times


strlcpy :
This C string function is an extension to the standard library and appears on many (BSD-like) systems. IRIX header files only has it in /usr/include/internal/string_core.h, however MIPSPro C++ doesn't see it possibly due to header bugs or not including C headers in C++ mode.
So it's best to predefine the header in the source, which i did.

/usr/include/unistd.h is a C header and the timeval struct is there as a stub, because its proper definition is in /usr/include/sys/time.h
When MIPSPro C++ compiler includes both it breaks on the stub, i believe it was in GUIScript.cpp when this popped up. The way to go for now is to hack the system unistd.h:

Code: Select all

--- /usr/include/unistd.h.save  Tue Dec 20 20:39:51 2016
+++ /usr/include/unistd.h       Tue Dec 20 21:24:27 2016
@@ -469,7 +469,7 @@
* All other additions go here. These are non-POSIX/XOPEN
*/

-#if _SGIAPI || defined(_BSD_TYPES) || defined(_BSD_COMPAT)
+#if (_SGIAPI || defined(_BSD_TYPES) || defined(_BSD_COMPAT) ) && !(defined(_LANGUAGE_C_PLUS_PLUS))
/* Need to use the same predicate as
* types.h for inclusion of bsd_types.h/select.h
*/

This is probably needed for other code-projects.

The Demo Baldur's Gate zipfile doesn't work correctly, see the release notes. If someone has an idea, cfg file or hack, let us know in here.

I've included my config file :
BG2.txt
(12.47 KiB) Downloaded 10 times


I got Baldur's Gate 2 : Shadows of Ahn and Throne of Bhaal fom GoG source. You need to install it on a linux system with wine and copy over the entire directory to an IRIX system. Then fill in the path in the BG2.cfg file and start gemrb with:

Code: Select all

gemrb -c BG2.cfg


Inventory in ToB of my char:


There are still several problems with the program on IRIX, see the release notes. Doing a debug session with CVD (IRIX visual debugger) reveals thread issues with SDL and SIGSEGV's in certain malloc calls and new calls. This needs more testing and researching, possibly valgrinding the engine to look for leaks.

Happy New Year!
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
FYI, performance is good.. very quick on a 600mhz Octane.

Segfaults seem to not be so random for me...

Using a saved game that started right at candlekeep inn in BG1.. very begining where you are right outside the candlekeep inn door.

If I talk to the guard moving around right outside candlekeep inn door.. it segfaults. Every time.

If I go to the building way on the north side of the map and enter.. where a guy in the building walks over and talks (if I remember correctly.. he attacks you too).. it segfaults every time before the dialog is initiated. .

However, I can go into the candlekeep inn building and talk to some people in that room just fine with dialogs (inn keepr's name is Winthrop) without fail. Other people in the far back it also seg faults every time consistently.
Thanks necro for giving it a spin. What audio backend are you using?

In Linux there are some memory leaks when using SDL, I'm not sure if the segfaults are from SDL or gemrb.
I'm curious if you can attempt a Debug version build with MIPSPro. This way you can pinpoint the segfaults and call stack in BG1 (don't have it btw) so Lynx can take a look at it.
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
Where (or what CD?) can I find dbx in order to debug an app or core file? Right now I can only use gdb.. not sure if that works well with MIPSpro compiled code?

Your compiled version has working sound for me:
In the cfg file:
AudioDriver = sdlaudio
I did try with it set to none, but nothing changed as far as the seg faults.

Thanks to your latest diffs.. I can compile gemrb with MIPSPro without all the crazyness I was getting before.
My compiled version does not have sound though. But it still crashes in the same spots.
Regarding my compiling.. I am not sure how you are able to compile yours without the last diff I added to this thread?
In particular in the very begining:

[octane]:/storage/packaging-PENDING/gemrb-mipspro/gemrb-dexter/git-head/gemrb/build $ gmake
Scanning dependencies of target gemrb_core
[ 0%] Building CXX object gemrb/core/CMakeFiles/gemrb_core.dir/ActorMgr.cpp.o
[ 1%] Building CXX object gemrb/core/CMakeFiles/gemrb_core.dir/Ambient.cpp.o
cc-1293 CC: ERROR File = /storage/packaging-PENDING/gemrb-mipspro/gemrb-dexter/git-head/gemrb/gemrb/includes/Predicates.h, Line = 51
Pure specifier ("= 0") is allowed only on virtual functions.

bool operator()(PT param) const=0;

I have to add 'variable' before bool and it compiles.. however almost every compile item gives a WARNING:
function "GemRB::VoidCallback::operator()()" is hidden by
"GemRB::Callback<T>::operator()" -- virtual function override
intended?

virtual bool operator()(T target)=0;

So not sure on the impact of that...

I compiled with debugging enabled "-g" and also enabled DEBUG in gemrb:
Only output from gemrb when i click on the guard right in front of the inn.. my character moves over to him and then.. bam.. seg fault:
[GameScript]: Displaying string on: none
[ResourceManager]: Found 'watch.dlg' in 'chitin.key'.
[ResourceManager]: Found 'spell.ids' in 'chitin.key'.
Segmentation fault

Same with the guy in the house on top/north of the map. Guy comes over to me then bam.. seg fault:
[GameScript]: Displaying string on: none
[ResourceManager]: Found 'shank.dlg' in 'chitin.key'.
Segmentation fault

####
gdb on the core file (gemrb compiled with debug -g )
I am not sure if gdb can work properly with mipspro compiled code??

Code: Select all

ls from /usr/local/lib/gemrb/plugins/MOSImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/MOSImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/MUSImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/MUSImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/MVEPlayer.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/MVEPlayer.so
Reading symbols from /usr/local/lib/gemrb/plugins/NullSound.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/NullSound.so
Reading symbols from /usr/local/lib/gemrb/plugins/NullSource.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/NullSource.so
Reading symbols from /usr/local/lib/gemrb/plugins/OGGReader.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/OGGReader.so
Reading symbols from /usr/nekoware/lib/libvorbisfile.so.4...done.
Loaded symbols for /usr/nekoware/lib/libvorbisfile.so.4
Reading symbols from /usr/nekoware/lib/libvorbis.so.1...done.
Loaded symbols for /usr/nekoware/lib/libvorbis.so.1
Reading symbols from /usr/nekoware/lib/libogg.so.1...done.
Loaded symbols for /usr/nekoware/lib/libogg.so.1
Reading symbols from /usr/local/lib/gemrb/plugins/OpenALAudio.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/OpenALAudio.so
Reading symbols from /usr/nekoware/lib/libopenal.so.0...done.
Loaded symbols for /usr/nekoware/lib/libopenal.so.0
Reading symbols from /usr/nekoware/lib/libSDL-1.2.so.1...done.
Loaded symbols for /usr/nekoware/lib/libSDL-1.2.so.1
Reading symbols from /usr/lib32/libdl.so...done.
Loaded symbols for /usr/lib32/libdl.so
Reading symbols from /usr/lib32/libaudio.so...done.
Loaded symbols for /usr/lib32/libaudio.so
Reading symbols from /usr/nekoware/lib/libiconv.so.3...done.
Loaded symbols for /usr/nekoware/lib/libiconv.so.3
Reading symbols from /usr/lib32/libX11.so.1...done.
Loaded symbols for /usr/lib32/libX11.so.1
Reading symbols from /usr/lib32/libXext.so...done.
Loaded symbols for /usr/lib32/libXext.so
Reading symbols from /usr/local/lib/gemrb/plugins/PLTImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/PLTImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/PNGImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/PNGImporter.so
Reading symbols from /usr/nekoware/lib/libpng.so.3...done.
Loaded symbols for /usr/nekoware/lib/libpng.so.3
Reading symbols from /usr/nekoware/lib/libz.so.1...done.
Loaded symbols for /usr/nekoware/lib/libz.so.1
Reading symbols from /usr/nekoware/lib/libz.so...done.
Loaded symbols for /usr/nekoware/lib/libz.so
Reading symbols from /usr/local/lib/gemrb/plugins/PROImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/PROImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/PSTOpcodes.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/PSTOpcodes.so
Reading symbols from /usr/local/lib/gemrb/plugins/SAVImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/SAVImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/SDLVideo.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/SDLVideo.so
Reading symbols from /usr/local/lib/gemrb/plugins/SPLImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/SPLImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/STOImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/STOImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/TISImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/TISImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/TLKImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/TLKImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/TTFImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/TTFImporter.so
Reading symbols from /usr/nekoware/lib/libfreetype.so.7...done.
Loaded symbols for /usr/nekoware/lib/libfreetype.so.7
Reading symbols from /usr/local/lib/gemrb/plugins/WAVReader.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/WAVReader.so
Reading symbols from /usr/local/lib/gemrb/plugins/WEDImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/WEDImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/WMPImporter.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/WMPImporter.so
Reading symbols from /usr/local/lib/gemrb/plugins/ZLibManager.so...done.
Loaded symbols for /usr/local/lib/gemrb/plugins/ZLibManager.so

warning: wrong size gregset struct in core file
#0  0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
#1  0x00000000 in ?? ()
Previous frame identical to this frame (corrupt stack?)
(gdb) frame 0
#0  0x00000000 in ?? ()
(gdb) list
76      // about shrinking the heap.
77              #ifdef HAVE_UNISTD_H
78                      int pagesize = sysconf(_SC_PAGESIZE);
79              #else
80                      int pagesize = 4*1024;
81              #endif
82              mallopt(M_TRIM_THRESHOLD, 5*pagesize);
83      #endif
84
85              Interface::SanityCheck(VERSION_GEMRB);
(gdb)

thats about all I know about GDB ;)
I am not able to run gdb to execute gemrb.. give an unknown signal error early on loading a few plugins.

any help, or direction/hints to give?
Thanks
FYI.. on a linux node, Testing the same seg fault areas.. I grabbed their console output/log:

Guard outside inn:
[GameScript]: Displaying string on: none
[ResourceManager]: Searching for 'guarr02'...
[ResourceManager]: Found 'guarr02.wav' in 'chitin.key'.
[ResourceManager]: Found 'watch.dlg' in 'chitin.key'.
[ResourceManager]: Found 'spell.ids' in 'chitin.key'.
[ResourceManager]: Found 'GUIW.chu' in 'chitin.key'.
[ResourceManager]: Searching for 'guiwbtp3'...
[ResourceManager]: Found 'guiwbtp3.mos' in 'chitin.key'.
[ResourceManager]: Found 'GUIW.chu' in 'chitin.key'.
[ResourceManager]: Searching for 'guiwbtp1'...
[ResourceManager]: Found 'guiwbtp1.mos' in 'chitin.key'.
[ResourceManager]: Found 'clik2con.bam' in 'chitin.key'.
[ResourceManager]: Found 'GUIW.chu' in 'chitin.key'.

Man in house top of map (comes over to talk then attach):
[GameScript]: Displaying string on: none
[ResourceManager]: Searching for 'genmg14'...
[ResourceManager]: Found 'genmg14.wav' in 'chitin.key'.
[ResourceManager]: Found 'shank.dlg' in 'chitin.key'.
[ResourceManager]: Found 'GUIW.chu' in 'chitin.key'.
[ResourceManager]: Searching for 'guiwbtp3'...
[ResourceManager]: Found 'guiwbtp3.mos' in 'chitin.key'.
[ResourceManager]: Found 'GUIW.chu' in 'chitin.key'.
[ResourceManager]: Searching for 'guiwbtp1'...
[ResourceManager]: Found 'guiwbtp1.mos' in 'chitin.key'.
[ResourceManager]: Found 'GUIW.chu' in 'chitin.key'.

Noticing these are all within ResourceManager?
We are modding ResourceManager.h (as per our diffs) ..
in particular to include or not include ResourceSource.h for SGI due to no SFINAE

Also.. the Linux version seems to have "Searching for 'blah" yet SGI/IRIX does not show that yet. LInux has that right up front. I would imagine the segfault is occuring in this logic?

The text "Searching for .." is part of ResourceManager.cpp Maybe we could get someone to write more extended debug logic within ResourceManager.cpp ? I could just throw in lots of printf's but I am just hacking it. Or maybe Dexter could look more closely for anything that could cause IRIX/SGI to not work right?
necron2600 wrote: Where (or what CD?) can I find dbx in order to debug an app or core file? Right now I can only use gdb.. not sure if that works well with MIPSpro compiled code?

dbx is part of the ProDev Workshop 2.9.x CD. It's separate from the Compiler Execution Environment CD's

Your compiled version has working sound for me:
In the cfg file:
AudioDriver = sdlaudio
I did try with it set to none, but nothing changed as far as the seg faults.

This is the first thing i do when i get unexpected program crashes or interruptions: disable any optional module or plugin option. This way i can eliminate SDL from the Y-U-NO-RUN equation.

Thanks to your latest diffs.. I can compile gemrb with MIPSPro without all the crazyness I was getting before.
My compiled version does not have sound though. But it still crashes in the same spots.
Regarding my compiling.. I am not sure how you are able to compile yours without the last diff I added to this thread?
In particular in the very begining:

[octane]:/storage/packaging-PENDING/gemrb-mipspro/gemrb-dexter/git-head/gemrb/build $ gmake
Scanning dependencies of target gemrb_core
[ 0%] Building CXX object gemrb/core/CMakeFiles/gemrb_core.dir/ActorMgr.cpp.o
[ 1%] Building CXX object gemrb/core/CMakeFiles/gemrb_core.dir/Ambient.cpp.o
cc-1293 CC: ERROR File = /storage/packaging-PENDING/gemrb-mipspro/gemrb-dexter/git-head/gemrb/gemrb/includes/Predicates.h, Line = 51
Pure specifier ("= 0") is allowed only on virtual functions.

bool operator()(PT param) const=0;

I have to add 'variable' before bool and it compiles..

Say what? I never saw that before. Are you sure you have all patches installed for MIPSPro and your IRIX version? My list of patches is:

Code: Select all

cyane:/home/frank> showprods -E patch\*
I = Installed, R = Removed

Name                 Date        Description

I  patchSG0005329       07/14/2016  Patch SG0005329: 7.4 Compiler Header Files for Unix98, C99 and ANSI C++ namespace std #2
I  patchSG0005329.c++_dev_hdr_6518  07/14/2016  C++ Headers for Irix 6.5.18 and above
I  patchSG0005329.c++_dev_hdr_6518.lib  07/14/2016  C++ Headers for Irix 6.5.18 and above
I  patchSG0005329.compiler_dev_hdr_6518  07/14/2016  Base Compiler Headers for Irix 6.5.18 and above
I  patchSG0005329.compiler_dev_hdr_6518.lib  07/14/2016  Base Compiler Headers for Irix 6.5.18 and above

I  patchSG0005385       07/14/2016  Patch SG0005385: CPR fails to restart OpenMP jobs
I  patchSG0005385.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005385.eoe_sw.cpr  07/14/2016  SGI Checkpoint-Restart Software

I  patchSG0005401       07/14/2016  Patch SG0005401: Modules MIPSpro driver update 2
I  patchSG0005401.modules_sw  07/14/2016  Modules 2.2.1
I  patchSG0005401.modules_sw.mipspro  07/14/2016  MIPSpro modules support Software

I  patchSG0005474       07/14/2016  Patch SG0005474: Fixes for IRIX command and library vulnerabilities
I  patchSG0005474.desktop_base_sw  07/14/2016  IRIX Interactive Desktop Base Software, 6.5.21m
I  patchSG0005474.desktop_base_sw.dso  07/14/2016  Desktop Shared Libraries
I  patchSG0005474.desktop_base_sw.dso6_2  07/14/2016  Desktop 6.2 Shared Libraries
I  patchSG0005474.desktop_base_sw.ftrdso6_2  07/14/2016  Desktop 6.2 Icon Libraries (32-bit)
I  patchSG0005474.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005474.eoe_sw.base  07/14/2016  IRIX Base Execution Environment
I  patchSG0005474.eoe_sw.gifts_perl_lib  07/14/2016  Perl Libraries
I  patchSG0005474.insight_sw  07/14/2016  Online Documentation Software, 5.3
I  patchSG0005474.insight_sw.sgihelp  07/14/2016  SGIHelp (Help System), 5.3

I  patchSG0005525       07/14/2016  Patch SG0005525: ftpd updates for 6.5.22-6.5.23
I  patchSG0005525.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005525.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

I  patchSG0005533       07/14/2016  Patch SG0005533: Security patch for OpenSSL 0.9.7b
I  patchSG0005533.openssl_man  07/14/2016  openssl Online Documentation, 0.9.7d
I  patchSG0005533.openssl_man.manpages  07/14/2016  openssl man pages, 0.9.7d
I  patchSG0005533.openssl_man.relnotes  07/14/2016  openssl Release Notes, 0.9.7d
I  patchSG0005533.openssl_sw  07/14/2016  openssl execution only env, 0.9.7d
I  patchSG0005533.openssl_sw.base  07/14/2016  openssl executables, 0.9.7d
I  patchSG0005533.openssl_sw.lib32  07/14/2016  openssl n32 libraries, 0.9.7d

I  patchSG0005601       07/14/2016  Patch SG0005601: rpc.mountd updates
I  patchSG0005601.nfs_sw  07/14/2016  NFS Software
I  patchSG0005601.nfs_sw.nfs  07/14/2016  NFS Support

I  patchSG0005609       07/14/2016  Patch SG0005609: IRIX 6.5.22 and 6.5.23 CPR fix for librestart library
I  patchSG0005609.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005609.eoe_sw.cpr  07/14/2016  SGI Checkpoint-Restart Software

I  patchSG0005630       07/14/2016  Patch SG0005630: 6.5.22 XFS #3
I  patchSG0005630.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005630.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

I  patchSG0005667       07/14/2016  Patch SG0005667: Digital Media Tools on UltimateVision
I  patchSG0005667.dmedia_eoe_man  07/14/2016  Digital Media Documentation
I  patchSG0005667.dmedia_eoe_man.pages  07/14/2016  Digital Media Manual Pages
I  patchSG0005667.dmedia_eoe_sw  07/14/2016  Digital Media Software
I  patchSG0005667.dmedia_eoe_sw.base  07/14/2016  Digital Media System Components
I  patchSG0005667.dmedia_eoe_sw.lib  07/14/2016  Digital Media Execution Libraries

I  patchSG0005678       07/14/2016  Patch SG0005678: UDF DVDRAM write issue
I  patchSG0005678.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005678.eoe_sw.udf  07/14/2016  UDF Filesystem Support

I  patchSG0005734       07/14/2016  Patch SG0005734: update libpng, libz, libtiff, and jfif in ifl_eoe
I  patchSG0005734.ifl_eoe_man  07/14/2016  Image Format Execution Environment Documents
I  patchSG0005734.ifl_eoe_man.relnotes  07/14/2016  Image Format EOE Release notes
I  patchSG0005734.ifl_eoe_sw  07/14/2016  Image Format Executable Software
I  patchSG0005734.ifl_eoe_sw.c++  07/14/2016  Image Format Shared C++ Library

I  patchSG0005738       07/14/2016  Patch SG0005738: Networking Updates for 6.5.22
I  patchSG0005738.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005738.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

I  patchSG0005739       07/14/2016  Patch SG0005739: NFS fixes for 6.5.22m
I  patchSG0005739.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005739.eoe_sw.base  07/14/2016  IRIX Base Execution Environment
I  patchSG0005739.nfs_sw  07/14/2016  NFS Software
I  patchSG0005739.nfs_sw.autofs  07/14/2016  AutoFS Support
I  patchSG0005739.nfs_sw.nfs  07/14/2016  NFS Support

I  patchSG0005743       07/14/2016  Patch SG0005743: exportfs updates for 6.5.22
I  patchSG0005743.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005743.eoe_sw.base  07/14/2016  IRIX Base Execution Environment
I  patchSG0005743.nfs_man  07/14/2016  NFS Documentation
I  patchSG0005743.nfs_man.nfs  07/14/2016  NFS Support Manual Pages
I  patchSG0005743.nfs_sw  07/14/2016  NFS Software
I  patchSG0005743.nfs_sw.nfs  07/14/2016  NFS Support

I  patchSG0005785       07/14/2016  Patch SG0005785: Adobe Replacement Patch
I  patchSG0005785.x_eoe_sw  07/14/2016  X11 Execution Environment
I  patchSG0005785.x_eoe_sw.Xfonts  07/14/2016  X11 Standard Fonts
I  patchSG0005785.x_eoe_sw.eoe  07/14/2016  X11 Execution Environment

I  patchSG0005806       07/14/2016  Patch SG0005806: PAM interoperability with Sun NIS master using passwd.adjunct maps
I  patchSG0005806.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005806.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

I  patchSG0005807       07/14/2016  Patch SG0005807: Xlock authentication failures when PAM is in use
I  patchSG0005807.x_eoe_sw  07/14/2016  X11 Execution Environment
I  patchSG0005807.x_eoe_sw.eoe  07/14/2016  X11 Execution Environment

I  patchSG0005811       07/14/2016  Patch SG0005811: xfsdump/xfsrestore performance improvements for large filesystems
I  patchSG0005811.eoe_man  07/14/2016  IRIX Execution Environment Man Pages
I  patchSG0005811.eoe_man.base  07/14/2016  Basic IRIX Man Pages
I  patchSG0005811.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005811.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

I  patchSG0005856       07/14/2016  Patch SG0005856: MPEG audio and rate converter fixes for 6.5.21 through 6.5.23
I  patchSG0005856.dmedia_eoe_sw  07/14/2016  Digital Media Software
I  patchSG0005856.dmedia_eoe_sw.lib  07/14/2016  Digital Media Execution Libraries

I  patchSG0005910       07/15/2016  Patch SG0005910: Kernel rollup for 6.5.22m
I  patchSG0005910.eoe_sw  07/15/2016  IRIX Execution Environment Software
I  patchSG0005910.eoe_sw.base  07/15/2016  IRIX Base Execution Environment

I  patchSG0005922       07/14/2016  Patch SG0005922: Pthreads library fixes for IRIX 6.5.21 through 6.5.22
I  patchSG0005922.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0005922.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

I  patchSG0007061       07/14/2016  Patch SG0007061: rtmon identifies signal sender
I  patchSG0007061.dev_sw  07/14/2016  Development Software, 7.3.1.2
I  patchSG0007061.dev_sw.lib  07/14/2016  Development Libraries
I  patchSG0007061.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0007061.eoe_sw.perf  07/14/2016  Performance Measurement Utilities

I  patchSG0007076       07/14/2016  Patch SG0007076: MIPSpro 7.4.4m C++ Header File Update
I  patchSG0007076.c++_dev_hdr  07/14/2016  C++ Headers
I  patchSG0007076.c++_dev_hdr.lib  07/14/2016  C++ Library Headers

I  patchSG0007204       07/14/2016  Patch SG0007204: TimeZone processing change and 2007 zonefiles update
I  patchSG0007204.eoe_sw  07/14/2016  IRIX Execution Environment Software
I  patchSG0007204.eoe_sw.base  07/14/2016  IRIX Base Execution Environment

This is from my R4K Challenge S, but should be very similar to my O2's since i run all with 6.5.22m/7.4.4m
Pay special attention to patches 5329 and 7076 which fixes headers. This was originally patch 4605 but initially i incorrectly installed it in tandem with the MIPSPro 7.4 . SGI recommends to install the base compiler products first, then exit swmgr/inst and then re-open the patch folder(s) and inst will select the default set applicable for your system. This is to avoid partial patching of header files (could be that SGI incorrectly set the installation order on these patches)

however almost every compile item gives a WARNING:
function "GemRB::VoidCallback::operator()()" is hidden by
"GemRB::Callback<T>::operator()" -- virtual function override
intended?

virtual bool operator()(T target)=0;

So not sure on the impact of that...

Got that warning as well. operator()(T) is a virtual bool template constructor, which means that classes derived from this should either implement their own constructor if the virtual constructor is private (or even protected) but apart from that no clue. Maybe Lynx knows.

gdb on the core file (gemrb compiled with debug -g )
I am not sure if gdb can work properly with mipspro compiled code??

No, get dbx. GCC and MIPSPro use different name mangling in C++, so i doubt if this will work. Ah you said it already:
I am not able to run gdb to execute gemrb.. give an unknown signal error early on loading a few plugins.


Something else:
Noticing these are all within ResourceManager?
We are modding ResourceManager.h (as per our diffs) ..
in particular to include or not include ResourceSource.h for SGI due to no SFINAE

That patch is absolutely required because of the incorrect forward declaration which aborts the compilation of ResourceManager.cpp. I suspect this also prevents compiling this on windows unless the header is explicitely set.
It could be that there genuinely is a problem in ResourceManager.cpp but Lynx should have a look at that. Maybe he knows offhand if there are problems in the code.

BTW i added some code inlining to your previous post in order to making it more readable.
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
DEBUG!

####Talk to guard outside inn door:

Code: Select all

Process 86887:  Thread 0x10000: Stopped on signal SIGSEGV: Segmentation violation (default)
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::append(<stripped>) ["stl_alloc.h":372, 0x0ae151bc]
]


Here is stack:

Code: Select all

std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::append(<stripped>) ["stl_alloc.h":372]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(<stripped>) ["string":607]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=(this = 0x7fff26c0, __s = &0x7fff26d8) ["string":360]
GemRB::Font::RenderText(this = 0x1003cb60, string = &0x7fff2948, rgn = &0x7fff28e8, color = 0x12b13b88, alignment = '\000', point = 0x7fff288c, canvas = 0x0, grow = '\000') ["Font.cpp":254]
GemRB::Font::Print(this = 0x1003cb60, rgn = <class>, string = &0x7fff2948, color = 0x12b13b88, alignment = '\000', point = 0x0) ["Font.cpp":579]
GemRB::TextSpan::DrawContentsInRegions(this = 0x1084b0f0, rgns = &0x10677d3c, offset = &0x7fff2a10) ["TextContainer.cpp":284]
GemRB::ContentContainer::DrawContentsInRegions(this = 0x10626f58, rgns = &0x106964fc, offset = &0x7fff2ad0) ["TextContainer.cpp":544]
GemRB::ContentContainer::DrawContentsInRegions(this = 0x1069642c, rgns = &0x7fff2b50, offset = &0x7fff2b88) ["TextContainer.cpp":544]
GemRB::Content::Draw(this = 0x1069642c, p = <class>) ["TextContainer.cpp":69]
GemRB::TextArea::DrawInternal(this = 0x106963a8, clip = &0x7fff2be0) ["TextArea.cpp":141]
GemRB::Control::Draw(this = 0x106963a8, x = 64, y = 390) ["Control.cpp":110]
GemRB::Window::DrawWindow(this = 0x10678e18) ["Window.cpp":137]
GemRB::Interface::DrawWindows(this = 0x1000bbd0, allow_delete = '\001') ["Interface.cpp":3055]
GemRB::Interface::Main(this = 0x1000bbd0) ["Interface.cpp":997]
main(argc = 3, argv = 0x7fff2e94) ["GemRB.cpp":104]
__start(<stripped>) ["crt1text.s":177]


/usr/include/CC/stl_alloc.h:372

Code: Select all

return __r;
}
-->    *__my_free_list = __result -> _M_free_list_link;
return (__result);
};


/usr/include/CC/string:607

Code: Select all

__false_type) {
typedef typename iterator_traits<_InputIter>::iterator_category _Category;
-->    return append(__f, __l, _Category());
}


/usr/include/CC/string:360

Code: Select all

basic_string& operator=(const basic_string& __s) {
if (&__s != this)
-->      assign(__s.begin(), __s.end());
return *this;
}


/gemrb/gemrb/core/GUI/TextSystem/Font.cpp:254

Code: Select all

eolpos++; // convert from index
}
-->         line = string.substr(stringPos, eolpos - stringPos);
stringPos = eolpos;
}


/gemrb/gemrb/core/GUI/TextSystem/Font.cpp:579

Code: Select all

}

-->   size_t ret = RenderText(string, rgn, pal, alignment, &p);
if (point) {
*point = p;
}
return ret;
}


####Guy in north/top house who comes over to talk/attack

Code: Select all

std::__default_alloc_template<(__n = 32) ["stl_alloc.h":372]
std::simple_alloc<wchar_t,std::__default_alloc_template<(__n = 8) ["stl_alloc.h":199]
std::_String_alloc_base<wchar_t,std::allocator<wchar_t>,(this = 0x7fff26d8, __n = 8) ["string":135]
std::_String_base<wchar_t,std::allocator<wchar_t> >::_M_allocate_block(this = 0x7fff26d8, __n = 8) ["string":158]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_M_range_initialize(this = 0x7fff26d8, __f = 0x106e2b20, __l = 0x106e2b3c, <no name> = <class>) ["string":434]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_M_range_initialize(this = 0x7fff26d8, __f = 0x106e2b20, __l = 0x106e2b3c) ["string":441]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_M_initialize_dispatch(this = 0x7fff26d8, __f = 0x106e2b20, __l = 0x106e2b3c, <no name> = <no value>) ["string":453]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >(this = 0x7fff26d8, __f = 0x106e2b20, __l = 0x106e2b3c, __a = &0x7fff2674) ["string":345]
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::substr(this = 0x7fff2948, <no name> = 0x7fff26d8, __pos = 0, __n = 7) ["string":1033]
GemRB::Font::RenderText(this = 0x1003cc40, string = &0x7fff2948, rgn = &0x7fff28e8, color = 0x12d98628, alignment = '\000', point = 0x7fff288c, canvas = 0x0, grow = '\000') ["Font.cpp":254]
GemRB::Font::Print(this = 0x1003cc40, rgn = <class>, string = &0x7fff2948, color = 0x12d98628, alignment = '\000', point = 0x0) ["Font.cpp":579]
GemRB::TextSpan::DrawContentsInRegions(this = 0x106062c8, rgns = &0x107bcd14, offset = &0x7fff2a10) ["TextContainer.cpp":284]
GemRB::ContentContainer::DrawContentsInRegions(this = 0x106104c0, rgns = &0x1060fc14, offset = &0x7fff2ad0) ["TextContainer.cpp":544]
GemRB::ContentContainer::DrawContentsInRegions(this = 0x106103f4, rgns = &0x7fff2b50, offset = &0x7fff2b88) ["TextContainer.cpp":544]
GemRB::Content::Draw(this = 0x106103f4, p = <class>) ["TextContainer.cpp":69]
GemRB::TextArea::DrawInternal(this = 0x10610370, clip = &0x7fff2be0) ["TextArea.cpp":141]
GemRB::Control::Draw(this = 0x10610370, x = 64, y = 390) ["Control.cpp":110]
GemRB::Window::DrawWindow(this = 0x106101d8) ["Window.cpp":137]
GemRB::Interface::DrawWindows(this = 0x1000bbd0, allow_delete = '\001') ["Interface.cpp":3055]
GemRB::Interface::Main(this = 0x1000bbd0) ["Interface.cpp":997]
main(argc = 3, argv = 0x7fff2e94) ["GemRB.cpp":104]
__start(<stripped>) ["crt1text.s":177]


So it seems to seg violation at stl_alloc.h:372 stemming from Font.cpp line 254 and stack:
GemRB::Font::RenderText(this = 0x1003cb60, string = &0x7fff2948, rgn = &0x7fff28e8, color = 0x12b13b88, alignment = '\000', point = 0x7fff288c, canvas = 0x0, grow = '\000') ["Font.cpp":254]
or
GemRB::Font::RenderText(this = 0x1003cc40, string = &0x7fff2948, rgn = &0x7fff28e8, color = 0x12d98628, alignment = '\000', point = 0x7fff288c, canvas = 0x0, grow = '\000') ["Font.cpp":254]

There are some other problems of course.. but these stick out right away and core dump.
Lynx.. any help with this?
Thank you
Heyya. HEAD now has all your work. Please play with that when debugging, 0.8.4 is history. The crashes happen when trying to display text in the chat box. Don't mind ResourceManager, since we do selective logging.

The demo is a mess, ignore that for now.

Are you two building with sdl1 or 2?
lynx wrote: Are you two building with sdl1 or 2?

We are using SDL1 : SDL 1.2.13 and 1.2.15 to be exact.

For more info see the Neko_gemrb.txt file which contains the steps and requirements needed to build our version. At the moment necron2600 has the most debugging performed (with BG1).
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
Lynx.. hope your year has been going well?
Any possibility for helping us with the crashes we are encountering? GemRB is unusable except to showcase moving a character around.
Thank you
Looking at the error messages, it appears that canvas is a NULL pointer. It could be that the SDL 1.x binding for creating a canvas goes wrong. I should have a look at SDL2 compile in IRIX, since that is what i want to use for my programs.
Did you poke Lynx via his email yet?
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
I'm subscribed to this thread, no worries. Your stack is scary and I can't test it myself, so my options are limited. What are values of things in the line where it breaks in GemRB::Font::RenderText? Did something overflow etc.
lynx wrote: What are values of things in the line where it breaks in GemRB::Font::RenderText? Did something overflow etc.

The two examples by necron2600 list argument stack values of the member call GemRB::Font::RenderText

Talk to Guard outside Inn door:

Code: Select all

GemRB::Font::RenderText(this = 0x1003cb60, string = &0x7fff2948, rgn = &0x7fff28e8, color = 0x12b13b88, alignment = '\000', point = 0x7fff288c, canvas = 0x0, grow = '\000') ["Font.cpp":254]

Guy in north/top house who comes over to talk/attack:

Code: Select all

GemRB::Font::RenderText(this = 0x1003cc40, string = &0x7fff2948, rgn = &0x7fff28e8, color = 0x12d98628, alignment = '\000', point = 0x7fff288c, canvas = 0x0, grow = '\000') ["Font.cpp":254]

Both crash at the same font.cpp:254 line. In both cases canvas is a null pointer. I really should check with my O2 running IRIX6.5.30 if this is happening consistently across IRIX releases. I also cannot rule out SDL 1.x involvement in the crash.

But maybe the Linux trace shows some different values.

BTW: is there any use of the this pointer in the RenderText class? I had beef before with using that pointer in IRIX code (open source celestia)
:Crimson: :PI: :Indigo: :O2: :Indy: :Indigo2: :Indigo2IMP:
Those are the function arguments, not where it crashed (and mostly opaque pointers). If I understood correctly, the last line in GemRB was:
line = string.substr(stringPos, eolpos - stringPos);
So is string still sane? What's its length? Are stringPos and eolpos within limits ...

the function is ready for canvas to be null — if that were the main problem, it'd crash more cleanly.