11
12
09

Hpricot – [BUG] Bus Error – Solution / Workaround

Problem:

You’re using Hpricot to parse web content, but it’s throwing an error like this that completely kills the process (probably crashing your app, or your background task, as the case may be):

/usr/local/lib/ruby/gems/1.8/gems/hpricot-0.8.2/lib/hpricot/parse.rb:33: [BUG] Bus Error
ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-darwin8.11.1]
Abort trap

This resource suggests that the problem is that the content retrieved is precisely 16384 bytes long, however, that was not the problem in my case.

My problem is replicated in this gist. Examination of the URL it was trying to retrieve using curl with -i indicated that this was returning a 302 redirect:

HTTP/1.1 302 Found
Date: Thu, 12 Nov 2009 14:50:53 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-UA-Compatible: IE=EmulateIE7
Location: /
Set-Cookie: ASP.NET_SessionId=p2s0dljru11tiwer3e01jfq2; path=/; HttpOnly
Set-Cookie: Forum2backURL=/tm.aspx?m=1859288#1859354; path=/
Set-Cookie: Forum2preURL=; path=/
Cache-Control: private
Expires: Wed, 11 Nov 2009 13:50:53 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 120

I am not sure why Ruby’s OpenURI open method was not capable of parsing / following this redirect. However, I determined that the file returned by open() had a size of zero bytes, and this was causing Hpricot to blow up.

My workaround is just to check the size of the file returned by open() and only try to parse it if it is greater than 0:

f = open(file_or_uri)
if f.size > 0
doc = Hpricot(f)
else
raise "Could not retrieve content due to zero-sized file, possibly due to site redirect."
end

11
09
09

Thoughts on O, 2

Oliver is two years and three months old. He’s an amazing little man. He seems to get cuter every day, an impossible feat. He trucks around with determination, his little legs whipping along, always moving from one thing to the next.

He’s curious. When he hears something, he asks, “What was that? What was that noise?” He loves to pick things up from the ground – sticks, rocks, whatever. To his mother’s horror, the other day he scavenged a french fry from the floor of the mall and happily ate it. In other words, he is resourceful.

He is observant. He can spot a sliver of the moon in broad daylight, when it scarcely looks different than a scrap of cloud. He learns quickly and is unafraid of embarrassing himself. I’m in a constant pattern of language instruction with him, introducing new words and asking him to repeat them. He does very well at it. I like to throw some curveballs in there too. “That’s called ‘manipulation’, Oliver. Can you say ‘manipulation’?” “Manish-ship-ship-shun.” “Can you say controversial?” “Con-oh-SERial!”

Although his vocabulary may not have caught up to mine yet, he has already superseded my musical ability. His rendition of Gincle Gincle Little Star is far sweeter to the ear than my best attempts. He is also adept at filling in the parts of songs he doesn’t know with semi-melodic mumbling, which will put him in good stead when he needs to sing the national anthem later on in life.

He loves to be tickled. When he’s had enough, he lets me know: “Daddy, dop!” In general he is not afraid to let me know when I’m being a pain in the ass. “No, Daddy. Go way, Daddy!”

On the other hand, he doesn’t like it when I leave. We have interesting conversations in the front hallway on weekday mornings when he tries to prevent me from going to work.

“No Daddy go!”

“Daddy has to go to work.”

“Why Daddy work?”

“Daddy has to work so that he can make money.”

“Why money?”

“Because we need money so that we can buy food.”

“Why?”

“Because we need to eat.”

“Why?”

Why indeed? I used to believe that when I had a child, I would always try to explain things to that child and never resort to the pat answers I’d hear from other parents (“just because”). My child is only two and he is already defeating this goal. Why DO we need to eat?

You can answer that question, sure, but ask enough “whys”, and you’ll find yourself trying to explain the nature and reasons for existence of the universe – to a two-year-old.

Then again, he’s probably got as good a chance of understanding it as most. In fact, I think he’s taught me far more about the ultimate nature of life and existence than I could ever teach him.



Life, politics, code and current events from a Canadian perspective.

Adrian Duyzer
Email me

twitter.com/adriandz

Proud contributor to
Director, Web Division at

Feeds

Meta