对于这个魔幻的语言,调试花了我不少力气。
这个bug 只 在windows控制台下才出现,在linux下没问题。
一个好好的登陆post,成功后本应跳转的,控制台也打出302和跳转地址,可浏览器不跳转,报错。
用http sniffer工具看了一下,只有post没有回应数据。
一点点的查源码,发现mongrel拦了个异常,确没有打印一下,害人不浅啊。
最后查出是LogTailer类的tail!方法出现问题,print时有异常抛出,但被mongrel给接了,导致这个连接就这样结束了。
hack一下lib/hack_log_tailer.rb
module Rails
module Rack
class LogTailer
def tail!
@file.seek @cursor
if !@file.eof?
contents = @file.read
@cursor = @file.tell
$stdout.print contents rescue nil
end
end
end
end
end
问题解决,
主要问题出在utf8字串上,windows console为gbk,强制打出来,可能出现异常,再底层的有兴趣的可以再跟进去看看。
本文记录了一个仅在Windows控制台环境下出现的Bug调试过程。该Bug导致登录POST请求成功后未能正常跳转,并且浏览器报错。通过使用httpsniffer工具发现响应中缺少数据,进一步排查发现是由于LogTailer类的tail!方法在处理UTF8字符串时引发异常所致。
8805

被折叠的 条评论
为什么被折叠?



