I don't know about autodebug, but since you say that the graphics are
screwed up, I would start reducing this down to the first draw command that
fails, and then trying to extract that as a standalone test case that's
small enough to showcase a bug. If it's something else than the result of a
draw command, then if other options fail, tracing the program execution
with prints and bisecting to a place where the native and JS versions
differ, would be a good starting point. That should give more information
than "the game just doesn't work".

For issues with llc and lli: neither of those two tools are documented in
Emscripten, and they are intended only to be used internally by the
backend. It is possible that if you don't drive those tools exactly like
emcc does during its operation, that it can fail. You can try posting your
command line and input files to get more guidance there.

Best,
   Jukka


2014-05-06 11:15 GMT+03:00 Christoph Husse <[email protected]>:

> Hi,
>
> I am currently trying to convert my so far biggest C++ project to
> javascript. I have some experience with Emscripten by now but thise here
> gives me headaches. I tried for one day, but no success.
> The problem is as follows:
>
> I have a library containing a few megabytes of C++ code (so pretty big).
> It compiles fine on Visual Studio 2013, Intel Composer 14, GCC4.8, Clang
> 3.3... All can run it with assertion, valgrind does not notify any issue,
> Intel Memory Analyzer does not report one either.
> Now when I compile it to Javascript with Emscripten the weirdest things
> happen. It plays sound, but the graphics is totally screwed up and the game
> just doesn't work. I tried with all optimization options, debug info,
> SAFE_HEAP, typed arrays settings, alignment, function pointer aliasing,
> etc... No success. No error reported, no exception thrown, it just doesn't
> work. Same for any browser too, so not a Chrome issue.
>
>
> NOW, my last resort is "Autodebug", which proposedly should be able to
> track down such issues (personally i believe its an Emscripten bug, since
> everythign else works flawlessly). But I can't get it to work. When I
> generate the Bitcode file with emscripten, how can I possibly run this file
> with a normal CPU?
> I tried "lli", "llc" and so on. "lli" even crashes on the most simple
> applications (like a main() routine that fills a std::string vector with
> the apssed arguments, what gives?) with an error like this:
>
> lli: /home/natalie/Documents/llvm/lib/ExecutionEngine/JIT/JIT.cpp:622:
> void llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, const
> llvm::MutexGuard&): Assertion `!isAlreadyCodeGenerating && "Error:
> Recursive compilation detected!"' failed.
> 0  lli             0x0000000000d1a9ef
> 1  lli             0x0000000000d1aee9
> 2  libpthread.so.0 0x00007fc73cc37030
> 3  libc.so.6       0x00007fc73bf2c475 gsignal + 53
> 4  libc.so.6       0x00007fc73bf2f6f0 abort + 384
> 5  libc.so.6       0x00007fc73bf25621 __assert_fail + 241
> 6  lli             0x000000000085168c
> 7  lli             0x0000000000851799
> llvm::JIT::getPointerToFunction(llvm::Function*) + 265
> 8  lli             0x000000000085a13e
> 9  lli             0x000000000085bc4b
> 10 lli             0x000000000058cb21
> 11 lli             0x0000000000cb44df
> llvm::FPPassManager::runOnFunction(llvm::Function&) + 607
> 12 lli             0x0000000000cb7a1b
> llvm::FunctionPassManagerImpl::run(llvm::Function&) + 139
> 13 lli             0x0000000000cb7b99
> llvm::FunctionPassManager::run(llvm::Function&) + 105
> 14 lli             0x0000000000850f77
> llvm::JIT::jitTheFunction(llvm::Function*, llvm::MutexGuard const&) + 39
> 15 lli             0x00000000008515dc
> llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, llvm::MutexGuard
> const&) + 28
> 16 lli             0x0000000000851799
> llvm::JIT::getPointerToFunction(llvm::Function*) + 265
> 17 lli             0x000000000085a6b6
> 18 lli             0x0000000000625fdd
> 19 lli             0x0000000000625afa X86CompilationCallback + 74
> Stack dump:
> 0. Program arguments:
> /home/natalie/Documents/llvm/build/Release+Asserts/bin/lli ./SNES.bc
> 1. Running pass 'X86 Machine Code Emitter' on function
> '@_ZNSt3__18ios_base4InitC2Ev'
>
>
> Like I always get the "recusive compilation" bit here...
>
> With "llc" I always get "inavlid instruction" or "Target doesnt support
> this output file".
>
> Now I have somewhat reached the end. I have no idea what else to try.
>
> So please tell me, how do I get "autodebug" to work on a main() routine
> with an "std::vector" for starters? because right now this seems like a
> lost cause.
>
> Thanks :)
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to