Hi Naveen,

Thanks for the report.  We'll look into it on Monday.

- Doug

On Sat, Mar 26, 2011 at 9:02 PM, Naveen Koorakula
<[email protected]>wrote:

> Hi guys,
>
> Just deployed 0.9.5.0.pre with hypernode (our hypertable nodejs binding),
> which uses the new C++ async scanner api. I'm seeing an error on an async
> read.
>
> The error looks like:
> /usr/local/include/boost/smart_ptr/intrusive_ptr.hpp:166: T*
> boost::intrusive_ptr<T>::operator->() const [with T =
> Hypertable::CellsBuilder]: Assertion `px != 0' failed.
>
> This traces back to a class I defined in the binding, that derives from
> ResultCallback.
>
>   class ScanCallback: public Hypertable::ResultCallback {
>   public:
>     ScanCallback() : m_cells(8) {}
>     virtual ~ScanCallback() {}
>
>     void
>     scan_ok (TableScannerAsync *scanner, ScanCellsPtr &cells) {
>       ScopedLock lock(mutex);
>       Cells cc;
> =>   cells->get(cc);
>       for (Hypertable::Cells::iterator ci = cc.begin(),
>              cend = cc.end(); ci != cend; ci++) {
>         m_cells.add(*ci);
>       }
>     }
>     ...
>   }
>
> The error is happening at the [ cells->get(cc) ] call marked in the code
> fragment above.
>
> The backtrace looks like:
> (gdb) bt
> #0  0x00007ffff64e3ba5 in raise () from /lib/libc.so.6
> #1  0x00007ffff64e76b0 in abort () from /lib/libc.so.6
> #2  0x00007ffff64dca71 in __assert_fail () from /lib/libc.so.6
> #3  0x00007fffd1b6a3eb in
> boost::intrusive_ptr<Hypertable::CellsBuilder>::operator-> (this=0xcaf608)
> at /usr/local/include/boost/smart_ptr/intrusive_ptr.hpp:166
> #4  0x00007fffd1b630ca in Hypertable::ScanCells::get (this=0xcaf5a0,
> cells=...) at /a/hypertable/current/include/Hypertable/Lib/ScanCells.h:50
> #5  0x00007fffd1b650ac in HyperConn::ScanCallback::scan_ok (this=0xcede80,
> scanner=0xc2fb00, cells=...) at ../binding.cc:70
> #6  0x00007fffd186d6d8 in Hypertable::TableScannerAsync::maybe_callback_ok
> (this=0xc2fb00, scanner_id=<value optimized out>, next=<value optimized
> out>, do_callback=255, cells=...) at /home/developer/s\
> rc/hypertable/src/cc/Hypertable/Lib/TableScannerAsync.cc:334
> #7  0x00007fffd1871b9a in Hypertable::TableScannerAsync::handle_result
> (this=0xc2fb00, scanner_id=0, event=<value optimized out>, is_create=<value
> optimized out>) at /home/developer/src/hypertable/src/\
> cc/Hypertable/Lib/TableScannerAsync.cc:267
> #8  0x00007fffd18753b4 in Hypertable::TableScannerHandler::run
> (this=0xcac410) at
> /home/developer/src/hypertable/src/cc/Hypertable/Lib/TableScannerHandler.cc:40
> #9  0x00007fffd173bfab in operator() (this=0xc96890) at
> /home/developer/src/hypertable/src/cc/AsyncComm/ApplicationQueue.h:154
> #10 boost::detail::thread_data<Hypertable::ApplicationQueue::Worker>::run
> (this=0xc96890) at /usr/local/include/boost/thread/detail/thread.hpp:56
> #11 0x00007fffcf33cb70 in thread_proxy () from
> /a/hypertable/current/lib/libboost_thread.so.1.40.0
> #12 0x00007ffff683a971 in start_thread () from /lib/libpthread.so.0
> #13 0x00007ffff659692d in clone () from /lib/libc.so.6
> #14 0x0000000000000000 in ?? ()
>
>
> Tracing it back, it is happening in Hypertable/Lib/ScanCells.h:50
>
> void ScanCells::get(Cells &cells) { m_cells->get(cells); }
>
> The value contained by the intrusive_ptr m_cells is null at this point.
>
> (gdb)
> #4  0x00007fffd1b630ca in Hypertable::ScanCells::get (this=0xcaf5a0,
> cells=...) at /a/hypertable/current/include/Hypertable/Lib/ScanCells.h:50
> (gdb) p m_cells
> $1 = {px = 0x0}
>
>
> ----
>
> So my question is: what does
>
> ResultCallback::scan_ok(TableScannerAsync *scanner, ScanCellsPtr &cells)
>
> indicate ? Are there any checks that need to be done before we can attempt
> to read off the cells contained in the ScanCellsPtr &cells ? Couldn't find
> anything obvious in code, hence asking..
>
> TIA,
> --Naveen
> founder & ceo, campfire labs. 415 425 5412. We're hiring!
> http://www.campfirelabs.com/jobs
>
> --
> You received this message because you are subscribed to the Google Groups
> "Hypertable Development" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/hypertable-dev?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en.

Reply via email to