When juj gets back I hope he can look at why we are building a 32-bit executable there.
Meanwhile, is there any chance you can find the stack trace that causes the error? Increasing the stack size is a workaround, but it would be good to fix the underlying issue. On Thu, Jul 9, 2015 at 5:54 PM, <[email protected]> wrote: > All right, I was finally able to get around the errors with the optimizer. > I did the following: > > 1. Changed Optimizer project to build 64-bit executable. (despite being > under the folder incoming_64bit_optimizer it builds a 32-bit executable on > windows!) > 2. Greatly increased stack size. > 3. Rebuilt the optimizer executable > > The whole emcc process still takes about 8 minutes to run on my library, > but at least it can actually complete the process. > > David > > On Tuesday, July 7, 2015 at 6:43:22 PM UTC-7, [email protected] wrote: >> >> Thanks for the tips. I was able to get around the issues that I was >> encountering when using just the latest build. >> >> However, I still encounter the Optimizer stack overflow crash. Here is a >> partial call stack: >> >> msvcr120.dll!6544a5d6() >> [Frames below may be incorrect and/or missing, no symbols loaded for >> msvcr120.dll] >> msvcr120.dll!654605db() >> msvcr120.dll!654b9bf0() >> msvcr120.dll!654b9c8d() >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::Frag::Frag(char * >> src=0x0cdffdc9) Line 231 + 0xe bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40448) Line 290 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseExpression(cashew::Parser<Ref,ValueBuilder>::ExpressionElement >> initial={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40448) Line >> 726 C++ >> > optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x1cf4e3dc) Line 301 + 0x28 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseExpression(cashew::Parser<Ref,ValueBuilder>::ExpressionElement >> initial={...}, char * & src=0x20202020, const char * seps=0x00b40448) Line >> 726 C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x00000002, const char * seps=0x00b40448) Line 304 + 0x37 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterParen(char * >> & src=0x0cdffdc9) Line 590 C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 304 + 0x18 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseExpression(cashew::Parser<Ref,ValueBuilder>::ExpressionElement >> initial={...}, char * & src=0x20202020, const char * seps=0x00b40478) Line >> 726 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterIdent(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x1cf4e37c) Line >> 539 C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 300 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * & >> src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, >> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...}) Line >> 806 + 0x33 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char >> * & src=0x0cdffdc9, Ref block={...}) Line 819 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseIf(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 420 + 0x27 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 334 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 293 + 0x13 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * & >> src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, >> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...}) Line >> 806 + 0x33 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char >> * & src=0x0cdffdc9, Ref block={...}) Line 819 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseDo(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 434 + 0x26 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 335 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 293 + 0x13 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * & >> src=0x00000002, Ref block={...}, const char * seps=0x00b40478, >> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...}) Line >> 806 + 0x33 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char >> * & src=0x0cdffdc9, Ref block={...}) Line 819 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseIf(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 420 + 0x27 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 334 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 293 + 0x13 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * & >> src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, >> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...}) Line >> 806 + 0x33 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char >> * & src=0x0cdffdc9, Ref block={...}) Line 819 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseDo(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 434 + 0x26 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 335 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 293 + 0x13 bytes C++ >> >> >> Prior to that the following stack is repeated. (probably infinitely >> although depending on how the parser is written it could just be a very >> large stack) >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * & >> src=0x00000002, Ref block={...}, const char * seps=0x00b40478, >> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...}) Line >> 806 + 0x33 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char >> * & src=0x0cdffdc9, Ref block={...}) Line 819 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseIf(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 420 + 0x27 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 334 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 293 + 0x13 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * & >> src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, >> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...}) Line >> 806 + 0x33 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char >> * & src=0x0cdffdc9, Ref block={...}) Line 819 C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseDo(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 434 + 0x26 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 335 + 0x18 bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 293 + 0x13 bytes C++ >> >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterIdent(cashew::Parser<Ref,ValueBuilder>::Frag >> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478) Line >> 533 + 0xf bytes C++ >> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char * & >> src=0x0cdffdc9, const char * seps=0x00b40478) Line 300 + 0x18 bytes C++ >> >> I will investigate to see if I can get any other information tomorrow. >> >> Thanks, >> >> David >> >> On Tuesday, July 7, 2015 at 1:18:20 PM UTC-7, Alon Zakai wrote: >>> >>> That looks like a different error. It is caused by the repos not being >>> in sync - you need latest incoming on all 3 repos, see >>> >>> >>> http://kripken.github.io/emscripten-site/docs/building_from_source/building_fastcomp_manually_from_source.html#branches >>> >>> On Tue, Jul 7, 2015 at 12:55 PM, <[email protected]> wrote: >>> >>>> I still get the same error using Emscripten in the incoming branch and >>>> can't even run the samples without getting errors. This is my output trying >>>> to run test_hello_world: >>>> >>>> E:\Program Files\Emscripten\emscripten\incoming>python tests/runner.py >>>> test_hell >>>> o_world >>>> test_hello_world (test_core.default) ... (checking sanity from test >>>> runner) >>>> INFO root: (Emscripten: Running sanity checks) >>>> FAIL >>>> >>>> ====================================================================== >>>> FAIL: test_hello_world (test_core.default) >>>> ---------------------------------------------------------------------- >>>> Traceback (most recent call last): >>>> File "E:\Program >>>> Files\Emscripten\emscripten\incoming\tests\test_core.py", lin >>>> e 18, in test_hello_world >>>> self.do_run_from_file(src, output) >>>> File "E:\Program >>>> Files\Emscripten\emscripten\incoming\tests\runner.py", line 4 >>>> 79, in do_run_from_file >>>> includes, force_c, build_ll_hook, extra_emscripten_args) >>>> File "E:\Program >>>> Files\Emscripten\emscripten\incoming\tests\runner.py", line 4 >>>> 91, in do_run >>>> build_ll_hook=build_ll_hook, >>>> extra_emscripten_args=extra_emscripten_args, po >>>> st_build=post_build) >>>> File "E:\Program >>>> Files\Emscripten\emscripten\incoming\tests\runner.py", line 2 >>>> 57, in build >>>> assert os.path.exists(filename + '.o.js'), 'Source compilation >>>> error: ' + ou >>>> tput >>>> AssertionError: Source compilation error: Traceback (most recent call >>>> last): >>>> File "E:\Program Files\Emscripten\emscripten\incoming\emscripten.py", >>>> line 106 >>>> 7, in <module> >>>> _main(environ=os.environ) >>>> File "E:\Program Files\Emscripten\emscripten\incoming\emscripten.py", >>>> line 105 >>>> 7, in _main >>>> temp_files.run_and_clean(lambda: main( >>>> File "E:\Program >>>> Files\Emscripten\emscripten\incoming\tools\tempfiles.py", lin >>>> e 39, in run_and_clean >>>> return func() >>>> File "E:\Program Files\Emscripten\emscripten\incoming\emscripten.py", >>>> line 106 >>>> 3, in <lambda> >>>> DEBUG_CACHE=DEBUG_CACHE, >>>> File "E:\Program Files\Emscripten\emscripten\incoming\emscripten.py", >>>> line 964 >>>> , in main >>>> temp_files=temp_files, DEBUG=DEBUG, DEBUG_CACHE=DEBUG_CACHE) >>>> File "E:\Program Files\Emscripten\emscripten\incoming\emscripten.py", >>>> line 183 >>>> , in emscript >>>> settings['MAX_GLOBAL_ALIGN'] = metadata['maxGlobalAlign'] >>>> KeyError: 'maxGlobalAlign' >>>> Traceback (most recent call last): >>>> File "E:\Program Files\Emscripten\emscripten\incoming\emcc", line >>>> 1294, in <mo >>>> dule> >>>> final = shared.Building.emscripten(final, append_ext=False, >>>> extra_args=extra >>>> _args) >>>> File "E:\Program >>>> Files\Emscripten\emscripten\incoming\tools\shared.py", line 1 >>>> 535, in emscripten >>>> assert os.path.exists(filename + '.o.js'), 'Emscripten failed to >>>> generate .j >>>> s' >>>> AssertionError: Emscripten failed to generate .js >>>> >>>> >>>> ---------------------------------------------------------------------- >>>> Ran 1 test in 1.128s >>>> >>>> FAILED (failures=1) >>>> >>>> Any ideas? >>>> >>>> Thanks, >>>> >>>> David >>>> >>>> >>>> On Monday, July 6, 2015 at 8:29:59 PM UTC-7, Alon Zakai wrote: >>>>> >>>>> Is that the latest on the incoming branch? There was a recent fix >>>>> there for something that looks like your issue. >>>>> >>>>> >>>>> On Mon, Jul 6, 2015 at 6:43 PM, <[email protected]> wrote: >>>>> >>>>>> When I try using the latest Emscripten version 1.34.1 I get the >>>>>> following error: >>>>>> >>>>>> Traceback (most recent call last): >>>>>> File "E:\Program Files\Emscripten\emscripten\1.34.1\\emcc", line >>>>>> 1260, in <mod >>>>>> ule> >>>>>> shared.Building.llvm_opt(final, link_opts) >>>>>> File "E:\Program >>>>>> Files\Emscripten\emscripten\1.34.1\tools\shared.py", line 142 >>>>>> 9, in llvm_opt >>>>>> assert os.path.exists(target), 'Failed to run llvm optimizations: >>>>>> ' + output >>>>>> >>>>>> AssertionError: Failed to run llvm optimizations: >>>>>> >>>>>> Any help would be much appreciated. >>>>>> >>>>>> Thanks, >>>>>> >>>>>> David >>>>>> >>>>> >>>>> >>>> >>> -- > 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.
