[LLVMbugs] [Bug 4585] New: miscompilation at -O1 of luxrender/luxconsole

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sun Jul 19 12:29:42 PDT 2009


http://llvm.org/bugs/show_bug.cgi?id=4585

           Summary: miscompilation at -O1 of luxrender/luxconsole
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: edwintorok at gmail.com
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=3216)
 --> (http://llvm.org/bugs/attachment.cgi?id=3216)
4710.i

Running luxconsole built with llvm-g++ -O1 results in:
[Lux Segmentation fault

-O0 is fine. GCC 4.3 and 4.4 compile luxrender just fine.

I've reduced it to compiling just luxconsole.cpp and api.cpp:

the reduced luxconsole.cpp has (after a bunch of includes):
void foobar() {
      boost::posix_time::time_duration td(0, 0, 1, 0);
      std::stringstream ss;
      ss << td;
  }
    int main(int ac, char *av[]) {
      std::stringstream ss;
      luxError(0, 0, ss.str().c_str());
  }

If compile this at -O1, and link with api.cpp compiled at whatever -O level,
the result is an executable that segfaults. Compiling this at -O0 and api.cpp
at -O1, -O2, ... works.

If I remove the foobar function, or make it static then the segfault
dissappears.
This is strange, because foobar() is  never called/referenced (try renaming to
something random, still crashes). Also if I remove the boost:: stuff from
foobar(), the crash goes away.

Putting luxconsole.cpp and api.cpp in one C++ file, and compiling that at -O1
makes the bug go away too.

Printing something else than ss.str().c_str() (like a constant string) makes
the bug go away too.

Attached is 4710.i, which is the reduced luxconsole.cpp, to reproduce just
compile&run like this:
$ llvm-g++ 4710.i api.i -O && ./a.out
[Lux Segmentation fault

The original luxconsole was valgrind clean, this reduced one has some valgrind
warnings, but works fine with g++, it outputs:
[Lux 2009-Jul-19 22:29:142009-07-19 INFO : 0]


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list