[erlang-bugs] More HiPE issues with binaries

Loïc Hoguin essen@REDACTED
Mon Mar 4 22:57:12 CET 2013


On 03/03/2013 03:16 PM, Kostis Sagonas wrote:
> On 03/02/2013 09:17 PM, Loïc Hoguin wrote:
>> Hello,
>>
>> Cowboy doesn't work when compiled with HiPE. When using curl on a simple
>> hello world example, it sometimes work as expected, sometimes return a
>> 408 timeout error. When using http_load
>> (http://acme.com/software/http_load/) on the same example, it sometimes
>> work and sometimes throws a weird function_clause error.
>>
>> ...
>>
>> Here are the steps to reproduce. Sorry it's not the smallest download, I
>> can't isolate:
>
> OK, I've spent two hours on this and was able to minimize down to file
> cowboy_protocol.erl, which seems to be responsible for the behavior you
> are reporting. With this file compiled to BEAM byte code and everything
> else compiled to native code, cowboy seems to be working fine on my
> tests. Can you please confirm?

Confirmed.

> If this file is the problematic one, perhaps you can disable native code
> compilation just for it for the time being. Also, it would help me if

I'm not using native, it was just an experiment. I would like to make it 
work for future users though.

> you trace all the calls to its functions and check whether their returns
> differ between byte code and native code execution.

We're investigating.

While doing so I found that erlang:display(binary_to_list(Buffer)) 
didn't work as expected (with just cowboy_protocol natively compiled). 
Perhaps you can add that to your todo list. io:format works fine but 
seems to reduce the probability that the bug happens (as does calling gc 
directly).

> I will look more into it when I find some time...

No worries. It's mostly just an interesting bug, I'm looking into it on 
my spare time too.

Thanks for the pointers.

-- 
Loïc Hoguin
Erlang Cowboy
Nine Nines
http://ninenines.eu



More information about the erlang-bugs mailing list