Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the unrenderable error known only as Beak!? (or Less Than Dot)

I used to get an error every couple days at a shop I worked at, one of the users called it "Beak" because she thought it reminded her of one:

<.

...which, in the source, looks like:

<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>

"Beak" can be readily reversed by bouncing JRun on the ColdFusion server, and that was enough for me when I had direct control over my server, and bouncing it took no time and impacted no one too severely.

Now I'm in a shop where I don't have admin access to the webserver, and moreover (from a business perspective), the servers are transacting big dollar signs at any given moment, and can't just be bounced.

My undying curiosity was perpetually thwarted by Google's inability to search for anything other than a random collection of B's and P's.

But NOW... Now I have SO... and SO knows.

I can't say it's CF, in fact, I suspect it's Java actually... or IIS... or the cosmos poking me with an annoying beak shaped stick...

What the heck is Beak, and how do I make it go away?


Edits for the confused...

I can't say I can make the question much clearer, but I can say the lack of clarity was mostly a function of the error, and not my lack of inclusion.

The error doesn't come from a piece of code... there is no specific line number... Looking through log files has never revealed a template or templates that are run before the problem occurs.

Once triggered the error affects every template that is requested from the server, that effect is to return this string of letters, and nothing else, in response to the HTTP request: <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>

Restarting the JRun service causes the issue to go away... resetting the web server (IIS in all cases) or the database server (MSSQL, MySQL and Access) or the server itself (windows, various versions, various hardware) is unnecessary.

I honestly didn't expect anyone who HASN'T SEEN THIS EXACT ERROR before to even respond. I appreciate that well meaning folks have tried, but this isn't a Web Developer Oversight error (in the traditional sense) and code snippets will probably not be required to identify or resolve it.

I hope this clarifies my lack of information at least more to the degree to elucidate why I am asking for more information.

like image 733
OhkaBaka Avatar asked May 27 '09 22:05

OhkaBaka


3 Answers

It would help to see the source code for the page that is generating this output. What you are describing is not something that is a "fault" of any program language but rather the result of a function or perhaps an expectation that some resource is available when occasionally it is not. Things you can do to solve this would include collecting as much information about what causes the problem to occur. Here are some general guidelines to follow when debugging an unknown problem.

  1. Is the problem intermittent with the same information? If so, then it is likely not some explicit line of code that is wrong but rather an assumption about some external resource (like a database) which the developer assumes will always be available (your code has to consider what the user will experience if the database is not available).
  2. Can the problem be reproduced on a different environment (like your workstation)? Sometimes subtle changes between platforms (Debian vs. Red Hat, or even Java 1.6.10 vs. Java 1.6.9) can introduce unexpected issues.
  3. Can the problem be reproduced with different information? Maybe the problem occurs because the developer assumes that some invalid value could never get past some earlier filter and thus never bothers to trap invalid values at the function that is generating the error, this is common is poorly written web applications because people tend to assume that HTML FORMs only allow a certain set of values to be entered

Hope this helps.

like image 75
Jason Sperske Avatar answered Nov 08 '22 15:11

Jason Sperske


Strange question, so a strange answer.

a) Less than dot ("<.") is a symbol use in the J programming language, which to my knowledge doesn't have any relationship with the Java underlying ColdFusion. It means (I quote from a course on J run by Steven Phillips in Japan

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

b) This precise error is used as a signature by user kaht on another forum, so they might know something about it. The link in the signature takes you to lessthandot.com, a programming forum with plentiful puzzles. The forum name was prompted by "Beak".

If you can post the full output of the error then it'd go a long way to figuring out what's causing it; restarting the CF server isn't a permanent solution, as you recognise.

like image 3
Alistair Knock Avatar answered Nov 08 '22 15:11

Alistair Knock


Maybe it's a memory leak? That would explain the fact that it happens "randomly" and is fixed by restarting JRun.

The "beak" (<P><B><P><B><P><B><P>...) could be generated by a cferror template in your application. You should try changing your error template (and create one if you don't have one) so that it contains only the following line.

<cfdump var="#cferror#">

That's my best guess, based on the information you provided. People have asked for more information, and I think it's a mistake to refuse. I can tell you from experience you will find answers to problems like this sooner and more often if you cling to the assumption that there was an oversight on your part.

like image 1
Patrick McElhaney Avatar answered Nov 08 '22 14:11

Patrick McElhaney