Что за неустранимая ошибка, известная только как Клюв !? (или меньше, чем точка) - PullRequest
7 голосов
/ 28 мая 2009

Раньше каждые пару дней я получал сообщение об ошибке в магазине, в котором работал, один из пользователей назвал его «Клювом», потому что она подумала, что это напомнило ей:

<. </strong>

... который в источнике выглядит так:

<P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><.</B>

«Клюв» можно легко перевернуть, отразив JRun на сервере ColdFusion, и этого было достаточно для меня, когда я имел прямой контроль над своим сервером, и отскок от него не занял много времени и ни на кого не повлиял.

Сейчас я нахожусь в магазине, где у меня нет доступа администратора к веб-серверу, и более того (с точки зрения бизнеса) серверы совершают большие знаки доллара в любой момент времени, и их нельзя просто отскочить .

Мое бессмертное любопытство постоянно подавлялось неспособностью Google искать что-либо, кроме случайной коллекции B и P.

Но СЕЙЧАС ... Теперь у меня ТАК ... и ТАК знает.

Я не могу сказать, что это CF, на самом деле, я подозреваю, что это на самом деле Java ... или IIS ... или космос ткнул меня раздражающей палкой в ​​форме клюва ...

Какого черта Клюв, и как мне заставить его уйти?


Правки для запутанных ...

Не могу сказать, что могу сделать вопрос намного яснее, но могу сказать, что отсутствие ясности было в основном функцией ошибки, а не моим отсутствием включения.

Ошибка не связана с фрагментом кода ... нет определенного номера строки ... Просмотр файлов журнала никогда не обнаруживал шаблон или шаблоны, которые выполняются до возникновения проблемы.

После запуска ошибка влияет на каждый шаблон, запрашиваемый с сервера, этот эффект должен возвращать эту строку букв и ничего больше в ответ на запрос HTTP: <P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><.</B>

Перезапуск службы JRun приводит к исчезновению проблемы ... сброс веб-сервера (IIS во всех случаях) или сервера базы данных (MSSQL, MySQL и Access) или самого сервера (windows, различные версии, различное оборудование) не нужен.

Честно говоря, я не ожидал, что кто-то, кто НЕ УВИДЕЛ ЭТУ ТОЧНУЮ ОШИБКУ прежде, чем даже ответит. Я ценю то, что добрые люди пытались это сделать, но это не ошибка надзора веб-разработчика (в традиционном смысле этого слова), и фрагменты кода, вероятно, не потребуются для ее идентификации или устранения.

Надеюсь, это прояснит мою нехватку информации, по крайней мере, до такой степени, чтобы объяснить, почему я прошу дополнительную информацию.

Ответы [ 3 ]

5 голосов
/ 29 мая 2009

Было бы полезно увидеть исходный код страницы, которая генерирует этот вывод. То, что вы описываете, - это не что-то, что является «ошибкой» какого-либо программного языка, а скорее результат функции или, возможно, ожидание того, что какой-то ресурс доступен, хотя иногда это не так. Чтобы решить эту проблему, нужно собрать как можно больше информации о причинах возникновения проблемы. Вот некоторые общие рекомендации, которые необходимо соблюдать при отладке неизвестной проблемы.

  1. Проблема с той же информацией? Если это так, то, скорее всего, это не какая-то явная строка кода, которая является неправильной, а скорее предположение о каком-то внешнем ресурсе (например, базе данных), который, как предполагает разработчик, будет всегда доступен (ваш код должен учитывать то, что будет испытывать пользователь, если база данных недоступна).
  2. Может ли проблема быть воспроизведена в другой среде (например, на вашей рабочей станции)? Иногда незначительные изменения между платформами (Debian против Red Hat или даже Java 1.6.10 против Java 1.6.9) могут привести к неожиданным проблемам.
  3. Может ли проблема быть воспроизведена с другой информацией? Возможно, проблема возникает из-за того, что разработчик предполагает, что какое-то недопустимое значение никогда не сможет пройти через какой-то более ранний фильтр, и поэтому никогда не пытается перехватить недопустимые значения в функции, которая генерирует ошибку, это часто встречается в плохо написанных веб-приложениях, поскольку люди склонны считать, что ФОРМЫ HTML позволяют вводить только определенный набор значений

Надеюсь, это поможет.

3 голосов
/ 29 мая 2009

Странный вопрос, поэтому странный ответ.

a) Меньше чем точка ("<.") - это использование символов в языке программирования J, который, насколько мне известно, не имеет никакого отношения к Java, лежащему в основе ColdFusion. Это означает (я цитирую <a href="http://staff.aist.go.jp/steven.phillips/teaching/Assessment.html" rel="nofollow noreferrer"> курс по J, который ведет Стивен Филлипс в Японии

Monadic case: Returns the next integer less than y 
Dyadic case: Returns x if x is smaller than y, else y

b) Эта точная ошибка используется в качестве подписи пользователем kaht на другом форуме, поэтому они могут что-то знать об этом. Ссылка в подписи приведет вас к lessthandot.com , форуму по программированию с множеством головоломок. Название форума было предложено "Клюв".

Если вы сможете опубликовать полный вывод ошибки, то это будет иметь большое значение для выяснения причины ее возникновения; Как вы понимаете, перезапуск сервера CF не является постоянным решением.

1 голос
/ 30 июня 2009

Может быть, это утечка памяти? Это объясняет тот факт, что это происходит "случайно" и исправляется путем перезапуска JRun.

"Клюв" (<P><B><P><B><P><B><P> ...) может быть сгенерирован шаблоном cferror в вашем приложении. Попробуйте изменить шаблон ошибки (и создать его, если у вас его нет), чтобы он содержал только следующую строку.

<cfdump var="#cferror#">

Это мое лучшее предположение, основываясь на информации, которую вы предоставили. Люди просили больше информации, и я думаю, что отказываться от этого - ошибка. Я могу сказать вам по опыту, что вы найдете ответы на такие проблемы быстрее и чаще, если будете придерживаться предположения о том, что с вашей стороны был недосмотр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...