View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004107||unreal||ircd||public||2012-05-01 14:24||2012-05-02 19:20|
|Target Version||Fixed in Version||3.2.10-rc1|
|Summary||0004107: I/O Engine or buffer hang|
|Description||There's a bug that has been introduced somewhere between rev. 4996 and 5002, so when the new I/O Engine was added.|
The bug happens both with and without USE_POLL. This should make it easier to trace as thus the change must exist in the 'shared code path'.
See Steps-to-reproduce for more info.
|Steps To Reproduce||Easy. Telnet or nc to the irc server, and copy & paste this:|
USER x x x x NICK Something x1xxxxxxxxxxxxxxxxxxx x2xxxxxxxxxxxxxxxxxxx x3xxxxxxxxxxxxxxxxxxx x4xxxxxxxxxxxxxxxxxxx x5xxxxxxxxxxxxxxxxxxx x6xxxxxxxxxxxxxxxxxxx x7xxxxxxxxxxxxxxxxxxx x8xxxxxxxxxxxxxxxxxxx x9xxxxxxxxxxxxxxxxxxx x10xxxxxxxxxxxxxxxxxxx x11xxxxxxxxxxxxxxxxxxx x12xxxxxxxxxxxxxxxxxxx x13xxxxxxxxxxxxxxxxxxx x14xxxxxxxxxxxxxxxxxx
Normally, the irc will process 8-10 lines or so, and then the rest is slowly processed (= fake lag), that is what we want.
With this bug, the lines 9 through 14 are not processed at all, even if you wait for more than 30 seconds.
Only AFTER you type another command, suddenly all (or most) lines are processed at once.
Note that this hang happens per-client (per connection), and so other clients still behave fine, so it's not an ircd (process) hang.
|Tags||No tags attached.|
|3rd party modules|
- Fix bug caused by new I/O engine (both with and without USE_POLL):
queued data on the receive queue (eg: due to fake lag) was not processed
unless we got new data from the client.
Now, better document this. Also, avoid calling dbuf_put with 0 length.
|2012-05-01 14:24||syzop||New Issue|
|2012-05-01 14:25||syzop||Status||new => confirmed|
|2012-05-02 19:20||syzop||Note Added: 0016986|
|2012-05-02 19:20||syzop||Status||confirmed => resolved|
|2012-05-02 19:20||syzop||Fixed in Version||=> 3.2.10-rc1|
|2012-05-02 19:20||syzop||Resolution||open => fixed|
|2012-05-02 19:20||syzop||Assigned To||=> syzop|