[erlang-questions] Yaws's "sendfile" linked-in driver : "stealing control of fd" error

Sverker Eriksson sverker@REDACTED
Mon Apr 18 12:02:18 CEST 2011

On Sun, Apr 17, 2011 at 5:23 PM, zabrane Mikael <zabrane3@REDACTED> wrote:
>> Hi OTP team & Steve,
>> I'm using the "sendfile" (thanks to Steve Vinoski) linked-in driver
>> borrowed from "Yaws"
>> in one of my pet project.
>> Today, I noticed this strange error:
>> =ERROR REPORT==== 17-Apr-2011::20:49:18 ===
>> driver_select(0x0000000000000c31, 24, ERL_DRV_WRITE, 1) by
>> sendfile_drv driver #Port<0.3121> stealing control of fd=24 from
>> output driver tcp_inet #Port<0.10029>
The error message kind of says it all:
The driver "sendfile_drv" is calling driver_select() to subscribe for 
output events on file descriptor 24. BUT, driver "tcp_inet" is already 
subscribing to output events on that very same file descriptor 24. 
Driver "sendfile_drv" thus steals the file descriptor from "tcp_inet" as 
only one port at a time can subscribe to a particular file descriptor event.

I think you should consider this as an error. Drivers are not supposed 
to act like this. The normal cause of this is a driver that forgets to 
deselect a file descriptor before closing it. Despite that I would 
regard sendfile_drv as the primary suspect here as the new kid on the block.

/Sverker, Erlang/OTP

More information about the erlang-questions mailing list