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.

Reply via email to