На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Mono DateTime Serialization Bug , Ошибка HTTP 500. Error processing request.
    Здравствуйте.
    В нашем проекте (на Mono под Debian), иногда, после рестарта апача возникает ошибка, которая после некоторых повторных рестартов исчезает. Сегодня начал искать причину. Вот собственно сама ошибка -
    ExpandedWrap disabled
      Value 4186130014814077184 is outside the valid range [0,3155378975999999999]. Parameter name: ticks
       
      Description: HTTP 500. Error processing request.
       
      Stack Trace:
       
      System.ArgumentOutOfRangeException: Value 4186130014814077184 is outside the valid range [0,3155378975999999999].
      Parameter name: ticks
        at System.DateTime..ctor (Int64 ticks) [0x0008a] in /tmp/buildd/mono-2.6.7/mcs/class/corlib/System/DateTime.cs:319
        at System.DateTime.FromFileTime (Int64 fileTime) [0x00018] in /tmp/buildd/mono-2.6.7/mcs/class/corlib/System/DateTime.cs:793
        at System.IO.File.GetLastWriteTime (System.String path) [0x00030] in /tmp/buildd/mono-2.6.7/mcs/class/corlib/System.IO/File.cs:293
        at System.IO.File.GetLastWriteTimeUtc (System.String path) [0x00000] in /tmp/buildd/mono-2.6.7/mcs/class/corlib/System.IO/File.cs:298
        at System.Web.Handlers.ScriptResourceHandler.CreateResourceUrl (System.Reflection.Assembly assembly, System.String resourceName, Boolean notifyScriptLoaded) [0x0006b] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs:203
        at System.Web.Handlers.ScriptResourceHandler.InitEmbeddedResourcesUrls (System.Reflection.Assembly assembly, System.Collections.Hashtable hashtable) [0x00056] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs:79
        at System.Web.Handlers.ScriptResourceHandler.GetResourceUrl (System.Reflection.Assembly assembly, System.String resourceName, Boolean notifyScriptLoaded) [0x0001d] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs:175
        at System.Web.UI.ScriptReference.GetUrl (System.Web.UI.ScriptManager scriptManager, Boolean zip) [0x000dd] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web.Extensions/System.Web.UI/ScriptReference.cs:124
        at System.Web.UI.ScriptManager.RegisterScriptReference (System.Web.UI.Control control, System.Web.UI.ScriptReference script, Boolean loadScriptsBeforeUI) [0x00007] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs:820
        at System.Web.UI.ScriptManager.OnPreRenderComplete (System.Object sender, System.EventArgs e) [0x002c6] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs:570
        at System.Web.UI.Page.OnPreRenderComplete (System.EventArgs e) [0x0002a] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.UI/Page.cs:2176
        at System.Web.UI.Page.ProcessLoadComplete () [0x000bf] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.UI/Page.cs:1673
        at System.Web.UI.Page.InternalProcessRequest () [0x001cb] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.UI/Page.cs:1555
        at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x0005b] in /tmp/buildd/mono-2.6.7/mcs/class/System.Web/System.Web.UI/Page.cs:1372
      Version information: Mono Runtime Version: 2.6.7 (Debian 2.6.7-5); ASP.NET Version: 2.0.50727.1433

    После некоторых успешных поисков, нашел нечто подобное -
    http://stackoverflow.com/questions/5514031...lization-errors
    а также -
    https://bugzilla.novell.com/show_bug.cgi?id=660424
    И насколько понял, дело в сериализации и десериализации значений класса DateTime. Получается если перевести число 3155378975999999999 из Binary то дает такое:
    ExpandedWrap disabled
      d = DateTime.FromBinary(3155378975999999999);
      Console.WriteLine(d);
      returns 31.12.9999 23:59:59

    Так понял, что это баг mono. И чтобы исправить, надо сделать изменения в файлах
    ExpandedWrap disabled
      \mono\mcs\class\System.Runtime.Serialization\System.Xml\XmlBinaryDictionaryReader.cs
      \mono\mcs\class\System.Runtime.Serialization\System.Xml\XmlBinaryDictionaryWriter.cs

    Однако, найти эти файлы у себя я не смог. Кроме того, на локалке у меня ошибки такого рода не выходит. И я не понимаю где найти у себя эти файлы.
    Заранее благодарю за помощи.
    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0153 ]   [ 15 queries used ]   [ Generated: 17.05.24, 16:30 GMT ]