[Development] Default enabling inbound flow control on sockets

marius.storm-olsen at nokia.com marius.storm-olsen at nokia.com
Mon Feb 13 19:33:51 CET 2012


On 02/13/2012 08:10 AM, ext shane.kearns at accenture.com wrote:
>> Not sure. Is it a big problem? Or is it better to just continue as
>> is, and let the applications that do have a problem set it to
>> something reasonable to them instead?
>>
>> I'd probably suggest that we instead improve the output on that
>> worst case failure to help devs fix the problems in their
>> programs.
>>
>> $0.02
>>
>> Ben
>
> qWarning allocates memory, so once the worst case happens, we can't
> give any output (unless we first handle the exceptions inside
> Q*Socket) It would be possible to print a warning when buffering
> exceeds some threshold we consider to be unreasonably large. We can
> also improve the documentation (it's not bad, but doesn't mention
> flow control explicitly)
>
> https://bugreports.qt-project.org/browse/QTBUG-14464 seems to be
> explained by missing flow control causing out of memory errors under
> load.

Qt is not known for handling OOM cases, and we actually argue for the OS 
to handle it, and that the application (and its libraries) shouldn't 
have to think about memory not being available.
(Too many error conditions and OOM handling all over the place to bring 
any real benefit for it anyways.)

Here you are suggesting a behavior change to handle an OOM case, where 
the behavior will most likely cause valid applications to stop working, 
since they don't handle a (new and artificial) 64k in-buffer limit?

Maybe we should rather allocate a buffer for qWarning output, allowing 
us to properly report an error condition before the application aborts?

^shrug^ but I rather not have applications start failing at random due 
to a failure to have a new limit.

-- 
.marius


More information about the Development mailing list