[sldev] 1.20.12 build problem on Windows regarding STL compatibility issue

Alissa Sabre alissa_sabre at yahoo.co.jp
Wed Jul 9 07:29:21 PDT 2008


Developers,

I'm having a trouble building/running recent 1.20 series of SL viewer
on Windows using VS2005.  I believe it is related to the compatibility
issues on Microsoft implementation of STL, in particular, that related
to "safe iterator", although I'm not exactly sure...

I put two essential questions on the bottom of this mail.  Any
comments are appreciated.

---

I downloaded and built SL viewer 1.20.12 on my Windows using Visual
C++ Express 2005.  I converted solution/project files by myself
following the instructions on:

   http://wiki.secondlife.com/wiki/Converting_project_files_for_MSVS2005

The compile seemed successful.  However, When executed alone, it does
not show any window, consuming 100% CPU until I terminate the process.
When executed under debugger, it stopped before showing any window
with the following message:

    Unhandled exception at 0xXXXXXXXX in newview_noopt.exe: 0xC0000005:
    Access violation reading location 0xXXXXXXXX.

and the top entries of the stack trace shows something like:

    std::list<XXX>::begin()
    boost::signals::detail::named_slot_map_iterator::init_next_group()
    boost::signals::detail::named_slot_map::end()

and I found the code for boost::signals::detail::named_slot_map::end()
is taken from the boost library file
libboost_signals-vc80-mt-s-1_34_1.lib contained in the SL library
bundle.

After examined the issue with debugger, I had a feeling that the size
(as in sizeof()) of some variable is understood incorrectly.  And I
remembered the _SECURE_SCL=0 issue regarding Microsoft VS2005 STL's
iterator issues:

    https://lists.secondlife.com/pipermail/sldev/2007-June/002791.html

My compiler options included the define for _SECURE_SCL=0 because the
wiki page says so...  I removed the define for _SECURE_SCL=0 from the
compiler options, and buildt again.

The resulting executable worked fine.

The mail by Matt Kimmel says, however, this _SECURE_SCL=0 define is
essential for VS2005 build, and the viewer frequently crashes without
it.  (Although I have not experienced any crash of my own build of
1.20.12 viewer without _SECURE_SCL=1 for about three or four hours.)

On the other hand, it is apparent that the *.lib files of pre-compiled
boost package is build without _SECURE_SCL=0 settings, so the
application that use boost library needs to use the same settings.
That's what I believe caused my initial problem.

I'm not sure what I should do.  In particular, I want to know answers
to the following two questions:

(1) I believe Lindens are using VS2005 for their own viewer
    development.  What settings are you using when compiling the
    viewer, regarding _SECURE_SCL?

(2) Matt Kimmel's mail above says the (viewer side) problem is in
    LLSD::impl class, although he is not specific enough...  Is the
    problem in LLSD::impl corrected after June 2007?

# I'm not sure why this issue is not discussed on JIRA or SLDev...  I
  was off from SL development for a while.  Nobody is working on
  Windows anymore?

Thanks in advance,

    Alissa Sabre
--------------------------------------
Stop! Global Warming ~ Yahoo! JAPAN Earth Project
http://pr.mail.yahoo.co.jp/earthproject/


More information about the SLDev mailing list