[erlang-bugs] SSL socket gets closed abruptly

Loïc Hoguin <>
Thu Feb 6 17:34:28 CET 2014


Hello,

I had the weirdest experience today. Let me describe it.

I added a test to the Cowboy test suite. That test sends more or less 
19MB of data to the server, which replies with 200 OK and no body.

The test worked for HTTP, but not for HTTPS (and similarly, worked with 
HTTP + reply compression but not HTTPS + reply compression).

Instead of getting a response, the test received {error, closed}.

Here is where it starts to get interesting:

Changing the reponse status code from 200 to anything else made the 
response be sent successfully. Everything other than 200 that I tried 
worked. But sending 200 was leading to the socket being closed before 
anything got sent.

On the other hand, on the Cowboy side of things, everything looked like 
it was sent. No errors or anything. And adding a few timer:sleep here 
and there didn't change a thing, it was still failing.

So I tried changing which tests were ran and reduced their number. Below 
a certain number of tests ran in parallel the test passed. Above a 
certain number the test failed. Running the tests sequential made the 
test succeed.

Then another weird thing. Removing the test that reads from /dev/urandom 
made the failing test succeed. But leaving only these 2 tests in made 
the test pass successfully.

I continued to investigate and tried all Erlang versions from R15B01 to 
master. The failure occurred only from R16B onward.

Then I tried a few other things (see previous mail) but for some reason 
the failure doesn't occur anymore. I cannot reproduce my previous issue.

I do not know what the issue was. Perhaps cosmic rays. I did not try 
going into a bunker to see if it happened there too. But I figured you 
might have a clue about it and potentially figure out a very weird bug 
in the SSL code.

Since my issue magically fixed itself I can continue with my work, at least.

Enjoy!

-- 
Loïc Hoguin
http://ninenines.eu


More information about the erlang-bugs mailing list