So you're saying that this happens on the first received message? Should be relatively easy to debug.
1/ Make a debug build of Thrift and Scribe. 2/ Put a breakpoint in the constructor of of TConnection. 3/ When the breakpoint hits, get the address of the appState_. 4/ Put a watchpoint on the contents of that address. If possible, make it conditional on the new value not being one of the valid enum values. 5/ Continue. 6/ When the watchpoint triggers (and is not a valid enum), do a backtrace to find out how it was corrupted. Usually it is a memory error. If it is a memory error, it might be more efficient to just run it under valgrind. --David Nathan Marz wrote: > Could use some help on this one. I'm running into this error when using > scribe, and I traced back the error to TNonBlocking Server. Here's the tail > of the log: > > Thrift: Wed Jan 20 23:11:06 2010 libevent 1.3e method epoll > Thrift: Wed Jan 20 23:14:08 2010 Totally Fucked. Application State 130 > scribed: src/server/TNonblockingServer.cpp:430: void > apache::thrift::server::TConnection::transition(): Assertion `0' failed. > > In the code, this message is printed whenever a switch statement doesn't > match any of the cases. > > I have scribe set up to have a "master" log server which aggregates all > logs, and the "client" servers simply forward messages to the master. > The clients work fine, it's the master that is crashing whenever it receives > a message. In case it's helpful, here's my scribe confs for master/client: > > master: > > port=1464 > > > <store> > category=default > type=file > rotate_period=hourly > add_newlines=1 > create_symlink=yes > file_path=/vol/scribe > base_filename=thisisoverwritten > fs_type=std > </store> > > client: > > port=1464 > > > <store> > category=default > type=buffer > > target_write_size=20480 > max_write_interval=1 > buffer_send_rate=1 > retry_interval=120 > retry_interval_range=60 > > <primary> > type=network > remote_host=XXX > remote_port=1464 > </primary> > > <secondary> > type=file > fs_type=std > file_path=/mnt/scribe > base_filename=thisisoverwritten > max_size=300000000 > </secondary> > </store> > > > >
