Hi all,
I’m trying to build Qt on Solaris 10 and it’s quite a painful operation. I’m using Sun C++ 5.8 (don’t tell me to use something else, it’s on a very controlled environment, and it’s the official compiler).
Doing a configure:
Qt Code:
  1. ./configure -no-script \
  2. -no-scripttools \
  3. -no-qt3support \
  4. -no-multimedia \
  5. -no-phonon \
  6. -no-webkit \
  7. -no-svg \
  8. -no-javascript-jit \
  9. -no-declarative \
  10. -no-openvg \
  11. -no-gtkstyle \
  12. -xmlpatterns \
  13. -no-glib \
  14. -nomake examples \
  15. -nomake demos
To copy to clipboard, switch view to plain text mode 
seems to work, qmake is built, but carrying on the config script when qmake tries to create project files for config.tests it ends with a segfault.
So I rebuilt qmake with -g flag and debug it. This is the call stack:
Qt Code:
  1. =>[1] QString::operator==(this = 0x5ca717, other = CLASS), line 2139 in "qstring.cpp"
  2. [2] operator==(key1 = STRUCT, key2 = STRUCT), line 892 in "qregexp.cpp"
  3. [3] QHash<QRegExpEngineKey,QCache<QRegExpEngineKey,QRegExpEngine>::Node>::remove(this = 0x59463c, akey = STRUCT), line 794 in "qhash.h"
  4. [4] QCache<QRegExpEngineKey,QRegExpEngine>::unlink(this = 0x594634, n = STRUCT), line 74 in "qcache.h"
  5. [5] QCache<QRegExpEngineKey,QRegExpEngine>::take(this = 0x594634, key = STRUCT), line 176 in "qcache.h"
  6. [6] prepareEngine_helper(priv = 0x6101e0), line 3708 in "qregexp.cpp"
  7. [7] prepareEngine(priv = 0x6101e0), line 3725 in "qregexp.cpp"
  8. [8] prepareEngineForMatch(priv = 0x6101e0, str = CLASS), line 3730 in "qregexp.cpp"
  9. [9] QRegExp::indexIn(this = 0xffbfc780, str = CLASS, offset = 0, caretMode = CaretAtZero), line 4114 in "qregexp.cpp"
  10. [10] Option::fixString(string = CLASS, flags = '\007'), line 638 in "option.cpp"
  11. [11] Option::fixPathToLocalOS(in = CLASS, fix_env = true, canonical = true), line 130 in "option.h"
  12. [12] MakefileGenerator::fileFixify(this = 0x5fce50, file = CLASS, out_d = CLASS, in_d = CLASS, fix = FileFixifyDefault, canon = true), line 2854 in "makefile.cpp"
  13. [13] MakefileGenerator::init(this = 0x5fce50), line 631 in "makefile.cpp"
  14. [14] UnixMakefileGenerator::init(this = 0x5fce50), line 182 in "unixmake.cpp"
  15. [15] MakefileGenerator::setProjectFile(this = 0x5fce50, p = 0xffbfe5cc), line 308 in "makefile.cpp"
  16. [16] MetaMakefileGenerator::createMakefileGenerator(proj = 0xffbfe5cc, noIO = false), line 496 in "metamakefile.cpp"
  17. [17] BuildsMetaMakefileGenerator::init(this = 0x5ccf80), line 140 in "metamakefile.cpp"
  18. [18] MetaMakefileGenerator::createMetaGenerator(proj = 0xffbfe5cc, name = CLASS, op = false, success = 0xffbfe53e), line 512 in "metamakefile.cpp"
  19. [19] runQMake(argc = 15, argv = 0xffbfe6e4), line 172 in "main.cpp"
  20. [20] main(argc = 15, argv = 0xffbfe6e4), line 194 in "main.cpp"
To copy to clipboard, switch view to plain text mode 

so the line is
Qt Code:
  1. if (d->size != other.d->size)
To copy to clipboard, switch view to plain text mode 
The thing is that this->d points to an invalid memory location (0×80000000). Suspecting a QString build issue I logged the stderr after rebuilding qmake. The only warning I have is

Qt Code:
  1. 5: Warning: d hides QString::d.
To copy to clipboard, switch view to plain text mode 

I have no idea how to fix that any ideas?
Thank you for your help