# ticket

type: defect
component: LibCore Utilities
priority: minor
owner: PatrickHorn
reporter: ewencp
status: closed
resolution: fixed
summary: ASIO does not run callbacks if run or poll are called too early
keywords: asio
description:
  Calling Network::IOServiceFactory::pollService(ioServ) between ObjectHost init and creating the first network connection causes IOService to fail permanently.
  The boost documentation mentions needing to call a "reset" function if there is nothing in the queue to be sent, possibly due to quirks with the select function having nothing to select on, but is there a better way, such as always having at least one event there?


type: defect
component: LibCore Utilities
priority: major
owner: PatrickHorn
reporter: ewencp
status: closed
resolution: pending
keywords: dependencies protobufs
summary:
  Order of dependency installation makes it impossible to get dotnet-protobufs using dependencies Makefile

description:
  The ordering/dependencies of the Makefile for Linux causes protobufs to be installed *before* mono (because mono is under optional-dependencies).  However, because of this, C# protocol buffers cannot be generated, making the mono plugin useless unless you manually delete and reinstall some dependencies.

  Ultimately this might mean that a Makefile isn't sufficient to express what we need to do: we have two things that can satisfy a dependency and need to dynamically decide which to use.  We might be better off figuring out how to "collect" all the dependencies and issue a single install command.


type: defect
component: Mono Scripting Plugin
priority: minor
owner: ewencp
reporter: ewencp
milestone: Public Alpha Release
status: closed
resolution: worksforme
summary: FindMono.cmake doesn't work properly with multiple calls to cmake
keywords: cmake mono
description:
  FindMono.cmake gives inconsistent results with multiple calls to cmake, even if nothing has changed. Specifically, it correctly determines that mono is not available the first time because it cannot find the dev files (include files, specifically), but then claims it is found when cmake is run again.

  This causes the monoscript plugin to be built even though not all the required files are available.


type: defect
component: Ogre Graphics Plugin
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Crash in Ogre trying to create cube map texture
keywords: ogre crash
description:
  From this report on the dev-list: http://groups.google.com/group/platformtalk/browse_thread/thread/a0cf32bd813ba3b5/148e119067c1e626#148e119067c1e626

  Crashes with this using OpenGL:

  16:01:19: OGRE EXCEPTION(3:RenderingAPIException): Zero sized texture 
  surface on texture ExteriorCubeMap face 0 mipmap 0. Probably, the GL 
  driver refused to create the texture. in GLTexture::_createSurfaceList 
  at ..\src\OgreGLTexture.cpp (line 394) 

  and this using DirectX

  16:14:10: OGRE EXCEPTION(3:RenderingAPIException): Error creating 
  texture: Not available in D3D9Texture::_createCubeTex at 
  ..\src\OgreD3D9Texture.cpp (line 871) 


  The user thinks he has a VIA/S3G UniChrome IGP.


type: defect
component: Object Host (Client)
priority: major
owner: ewencp
reporter: danx0r
status: closed
resolution: fixed
summary: LocRequest from python script does not generate a return message
keywords: scripting, message
description:
  modified test.py to send LocRequest to itself (the camera object)

  My understanding is this should result in a message -- perhaps ObjLoc? -- specifying the location of the object receiving the LocRequest.  I've tried it with other objects as well, and so far I haven't seen any likely candidate as a response message.  All I get are the prox messages for each object in the system, regardless of whether I send the LocRequest or not.

  the hash for the version I am testing is cecbbbd8


type: enhancement
component: Object Host (Client)
priority: major
owner: PatrickHorn
reporter: danx0r
status: closed
resolution: invalid
summary: Parent link nonfunctional
description:
  branch: master
  Database references object by private UUID, the space may not have assigned the pub UUID. In practice, cannot attach camera to a physical object


type: defect
component: Python Scripting
priority: major
owner: ewencp
reporter: danx0r
milestone: MusicDeptDeliverable
status: closed
resolution: fixed
summary: Name query returns not found
description:
  branch: master

  Querying 'Name' from Python returns with no data field (as called from PersistenceRead in liboh/scripting/ironpython/util.py)


type: defect
component: Mono Scripting Plugin
priority: critical
owner: ewencp
reporter: ewencp
cc: danielrh
status: closed
resolution: fixed
summary: Crash in mono GC when connecting with second object host
keywords: mono crash gc
description:
  On Ubuntu 9.04 64bit, rev 8fdebf85b0024a7fc3b6ababda2c6d3833ec76a8 I'm getting the following crash (from a GC thread, not the main thread) when I try to connect a second object host:

  {{{
  Program received signal SIGSEGV, Segmentation fault.
  [Switching to Thread 0xf290db90 (LWP 17858)]
  0xe823cf01 in ?? ()
  (gdb) bt
  #0  0xe823cf01 in ?? ()
  #1  0xf2ce4390 in ?? ()
  #2  0xf2f8f307 in mono_jit_runtime_invoke (method=0x3c6f40, obj=0xe4e820, params=0x0, exc=0xf290d1a8) at mini.c:4162
  #3  0xf304e353 in mono_runtime_invoke (method=0x9c0783c, obj=0xe4e820, params=0x0, exc=0xf290d1a8) at object.c:2401
  #4  0xf306ea89 in run_finalize (obj=0xe4e820, data=0x0) at gc.c:166
  #5  0xf313d099 in GC_invoke_finalizers () at finalize.c:787
  #6  0xf306ddc2 in mono_gc_invoke_finalizers () at boehm-gc.c:375
  #7  0xf306ecbc in finalizer_thread (unused=0x0) at gc.c:961
  #8  0xf309677e in start_wrapper (data=0x9902438) at threads.c:623
  #9  0xf31219b6 in thread_start_routine (args=0x9905984) at threads.c:286
  #10 0xf314a34e in GC_start_routine (arg=0x26f20) at pthread_support.c:1382
  #11 0xf6ee64ff in start_thread () from /lib32/libpthread.so.0
  #12 0xf4b1eb9e in clone () from /lib32/libc.so.6
  (gdb) mono_backtrace 
  Missing argument 0 in user function.
  (gdb) mono_backtrace 10
  #0 0xe823cf01 in  IronPython.Modules.PythonWeakRef/weakproxy:Finalize () + 0xc9 (0xe823ce38 0xe823cf61) [0x25ee0 - Root Domain]
  #1 0xf2ce4390 in  (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr) + 0x40 (0xf2ce4350 0xf2ce4407) [0x25ee0 - Root Domain]
  sendprox4
  #2  0xf2f8f307 in mono_jit_runtime_invoke (method=0x3c6f40, obj=0xe4e820, params=0x0, exc=0xf290d1a8) at mini.c:4162
  4162		return runtime_invoke (obj, params, exc, compiled_method);
  #3  0xf304e353 in mono_runtime_invoke (method=0x9c0783c, obj=0xe4e820, params=0x0, exc=0xf290d1a8) at object.c:2401
  2401		return default_mono_runtime_invoke (method, obj, params, exc);
  #4  0xf306ea89 in run_finalize (obj=0xe4e820, data=0x0) at gc.c:166
  166		mono_runtime_invoke (finalizer, o, NULL, &exc);
  #5  0xf313d099 in GC_invoke_finalizers () at finalize.c:787
  787	    	(*(curr_fo -> fo_fn))((ptr_t)(curr_fo -> fo_hidden_base),
  #6  0xf306ddc2 in mono_gc_invoke_finalizers () at boehm-gc.c:375
  375			return GC_invoke_finalizers ();
  #7  0xf306ecbc in finalizer_thread (unused=0x0) at gc.c:961
  961			mono_gc_invoke_finalizers ();
  #8  0xf309677e in start_wrapper (data=0x9902438) at threads.c:623
  623			start_func (start_arg);
  #9  0xf31219b6 in thread_start_routine (args=0x9905984) at threads.c:286
  286		thread_exit (thread->start_routine (thread->start_arg),
  }}}

  The second stack trace is using mono_backtrace to give info about the Mono calls.  This occurs in the object host, and only on the one that is connecting.

  My first guess would be that something is not being pinned properly, but I'm not sure about that.


type: defect
component: PBJ/Protobuf Wire Formt
priority: major
owner: danielrh
reporter: PatrickHorn
status: closed
resolution: wontfix
summary: Persistence Storage Element "name" returned as binary string rather than byte tuple
description:
  When getting an element from the database, that element appeared to be printing out as a string.
  This could be problematic if you stumble upon a strange unicode sequence


type: defect
component: Sirikata
priority: major
owner: danielrh
reporter: danx0r
status: closed
resolution: fixed
summary: sirikata crashes attempting to download asset
description:
  version: artist branch ac1355
  platform: Ubuntu 8.04, 32-bit

  attempting to load a scene with a light, a camera, and this asset:
  meru:///terrain_main_video_01.mesh
  which is presently mapped to:
  mhash:///915fe17b803c76e949bb235c34df69d06df09a61a11518b600baa64a3d5b3a02
  (CDN: sirikata.com/content/)

  causes a crash that ends with this:

  terminate called after throwing an instance of 'Ogre::InternalErrorException'
    what():  OGRE EXCEPTION(7:InternalErrorException): Missing geometry data in mesh file in MeshSerializerImpl::readSubMesh at OgreMeshSerializerImpl.cpp (line 1000)
  (0) : fatal error C9999: *** exception during compilation ***
  Cg compiler terminated due to fatal error

  full log is attached


type: defect
component: PBJ/Protobuf Wire Formt
priority: trivial
owner: danielrh
reporter: ewencp
cc: danielrh
status: closed
resolution: fixed
summary: PBJ generated headers don't have include guards
keywords: pbj
description:
  The x.pbj.hpp files generated by PBJ don't have include guards, so they currently have to be handled carefully to avoid double includes.  Should be pretty easy to add the include guards in the generator code, looks like initNameSpace() and closeNamespace() in PBJParseUtil.cpp would need some minor additions.


type: defect
component: Object Host (Client)
priority: minor
owner: ewencp
reporter: kturkowski
milestone: Multi-server Chat Demo
status: closed
resolution: invalid
summary: cppoh_d hangs when closing the window on the Macintosh
description:
  cppoh_d hangs when closing the window on the Macintosh, necessitating a Force Quit.

  Additionally, selecting "Quit cppoh_d" from the "cppoh_d" menu seems to do nothing.


type: task
component: Ogre Graphics Plugin
priority: major
owner: PatrickHorn
reporter: PatrickHorn
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Awesomium: Enable -fno-rtti on Mac build (and maybe windows)
keywords: awesomium, mac, win32
description:
  Google recently disabled RTTI in Chromium. This causes linker errors on some platforms if it is not also disabled in Awesomium.

  See here for the Chromium Issue for disabling RTTI on Mac:
  http://code.google.com/p/chromium/issues/detail?id=19094


type: defect
component: Sirikata
priority: trivial
owner: ewencp
reporter: PatrickHorn
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: PBJ files built in random (wrong) order and sometimes never generated
keywords: pbj, protobuf, cmake, mac
description:
  Causes errors only on clean builds, and some files simply never get generated when this happens, no matter how many times you rerun make.

  One way to force them to build in the right order is by adding all the *_protobuf.cc files to dependencies of libcore (i.e. an earlier dependency in the build process)

  This bug has been reproduced on two out of four mac systems in the past week.  Does not occur as often on Linux builds, and has not been tested on Windows afaik.


type: enhancement
component: Ogre Graphics Plugin
priority: minor
owner: PatrickHorn
reporter: danielrh
cc: danielrh
status: closed
resolution: fixed
summary: cppoh should be able to connect to multiple spaces
description:
  For eventuality of portals between worlds, object hosts with graphics plugins should be able to connect to multiple spaces and render at least 1 to texture


type: enhancement
component: Object Host (Client)
priority: major
owner: danielrh
reporter: danielrh
milestone: CCRMA Performance
status: closed
resolution: fixed
summary: Mechanism to maintain per-space time deltas
description:
  Spaces could run ntpd and clients could connect and request time deltas every minute or so (it's surprising how quickly things fall out of sync)
  As a fallback a standard ping message could be sent where the protobuf included source time and dest time--then the client could read that back and decide how far off they were.


type: enhancement
component: Sirikata
priority: major
owner: danx0r
reporter: danielrh
milestone: Bornholm
status: closed
resolution: fixed
summary: Off-axis browser windows
description:
  Certain displays need videos using the video tags and others need presence in the 3d world.

  Need mechanism to have off-axis browser and click to pull them parallel to the camera plane for interaction.


type: defect
component: Sirikata
priority: major
owner: danielrh
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Copy dll's to build directory in windows
description:
  Right now users have to track down each and every required dll (and get the zlib.dll from installed-curl not mono) to get a runnable program.
  We should have a script copy the dll's to the appropriate build directory in cmake itself


type: defect
component: Python Scripting
priority: minor
owner: ewencp
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: worksforme
summary: google.protobuf.reflection.py may leak memory
description:
  fdf216412e2c50308492e1d89516694554bc3ba0 committed a fix to avoid using the weakref class, thereby avoiding SIGSEGV's in mono's GC's call to weakref::finalize

  However the fact that Microsoft.Scripting.dll actually implements WeakHandle as a primitive type indicates that there may be a reason for its existence and that I may have inadvertently caused a memory leak.

  I would appreciate a pair of eyes to take a look at this in more detail.


type: defect
component: Object Host (Client)
priority: trivial
owner: danielrh
reporter: danielrh
milestone: Bornholm
status: closed
resolution: wontfix
summary: Shader Max Distance Cutoff
description:
  The shader should forcefully cutoff the light if it is outside of the max_cutoff while avoiding the NVIDIA bug triggered by this.


type: defect
component: Object Host (Client)
priority: major
owner: PatrickHorn
reporter: PatrickHorn
status: closed
resolution: invalid
summary: ProxyObject crash when parent is deleted
description:
  Crashes with a "pure virtual function called" for ProxyObjectListener::destroyed(), for the destruction notification of the children of a given parent object.

  gdb crashes when trying to print out the proxy object. This is probably a use-after-free.

  One possible solution is to make the list of children separate, and use shared_ptr's for them, because it would be nice to permit walking down through the tree, which is currently not possible.


type: defect
component: LibCore Utilities
priority: blocker
owner: PatrickHorn
reporter: PatrickHorn
milestone: MusicDeptDeliverable
status: closed
resolution: fixed
summary: Crash after hitting timedOut in SentMessage
description:
  Happened soon after typing "cont" from gdb--I was in the debugger long enough to cause a timeout. The timedOut function calls the callback function of the parent SentMessage, which has been deleted by that time.


type: defect
component: LibCore Utilities
priority: minor
owner: PatrickHorn
reporter: PatrickHorn
status: closed
resolution: fixed
summary: Assets fail to load sometimes
description:
  Seems to happen more often with name lookups on sirikata.com. The download code needs to be more resilient with flakey connections, perhaps have Transfer::ServiceIterator run through all available services 3 times, in case it failed during one of the passes.


type: enhancement
component: LibCore Utilities
priority: major
owner: PatrickHorn
reporter: PatrickHorn
milestone: Bornholm
status: closed
resolution: invalid
summary: Need way of saving name cache for offline use
description:
  Currently, only assets are always saved on disk. Names are only saved in names.txt when you upload files.

  One solution would be to have CachedNameLookupManager dump its cached names into a text file when it is destructed

  Another solution is a script that grabs all the online names and saves them into names.txt.

  Some implementation of an offline name store is a requirement for Bornholm and CCRMA so that we have no issues with a flaky Internet connection.


type: defect
component: PBJ/Protobuf Wire Formt
priority: major
owner: danielrh
reporter: dennis
status: closed
resolution: worksforme
summary: PBJ Generates CastBool with no arguments
description:
  6>C:/Documents and Settings/Owner/My Documents/Workspaces/sirikata/liboh/scripts/csharp/protocol/Sirikata.pbj.cs(1649,33): error CS1501: No overload for method `CastBool' takes `0' arguments

  ----
  code :

     public bool Stateless{ get {
              if (HasStateless) {
                  return PBJ._PBJ.CastBool(super.Stateless);
              } else {
                  return PBJ._PBJ.CastBool();
              }
          }


type: enhancement
component: Sirikata
priority: minor
owner: nobody
reporter: danx0r
status: closed
resolution: fixed
summary: uploaded mesh is not visible in scene
description:
  not clear if this is a user error -- I've looked as deeply as I can, even parsed the mesh in bullet, the vertices appear to be sane.

  If you convert the attached scene and run it, you will see the avatar (not attached to camera), but bornholm_material_test_01.mesh is nowhere to be found.


type: defect
component: Space (Server)
priority: major
owner: danielrh
reporter: danielrh
status: closed
resolution: fixed
summary: Space::now() must respect multiple space nodes
description:
  Right now each space node has its own Time.
  Since there's only one that's ok.
  If we want multiple space nodes then those space nodes should sync up with a central server so that objects can logically migrate without being told.

  this should happen by fixing Space.cpp's now() function and having sync logic between space nodes


type: defect
component: Space (Server)
priority: major
owner: danielrh
reporter: danielrh
status: closed
resolution: fixed
summary: Proximity System needs to use time synced to space
description:
  The proximity system right now does not sync up with the space to produce the same time. That means if proximity runs on a different computer as space or the space becomes distributed, the proximity system will need to sync up time with the Space


type: defect
component: Object Host (Client)
priority: minor
owner: danielrh
reporter: danielrh
status: closed
resolution: wontfix
summary: Evaluate whether tracking objects locally based on space's time or local time is better
description:
  The option is to either use LocalTime at all points except during Serialization/Deserialization or whether to use the Space's time through simulation and computation and then just writing those times out to the wire.

  The advantage of the latter is that the Delta offset is stored in the TopLevelSpaceConnection meaning it can easily be probed right before send


type: defect
component: LibCore Utilities
priority: critical
owner: PatrickHorn
reporter: danielrh
milestone: MusicDeptDeliverable
status: closed
resolution: fixed
summary: Make TimerHandler primitive available in IOService
description:
  When writing a new abstracted TimerHandler class also Fix #25 .
  This may require a shared_ptr to the class


type: defect
component: Sirikata
priority: major
owner: PatrickHorn
reporter: danielrh
milestone: CCRMA Performance
status: closed
resolution: fixed
summary: Object Host should update Space with Location updates
description:
  Right now ObjectHosts track their positions locally without informing space
  This causes prox to get out of date and disallows any sort of authority to be placed upon the space re: physics.
  HostedObjects should update Loc about position so that can forward these updates to prox


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: danx0r
status: closed
resolution: fixed
summary: ctl-s to save scene is broken
description:
  6b9c9

  it's still very useful to write a .csv file, since there is no other efficient way to modify the database.  If it's not going to be supported, it should be disabled.

  saving new scene as scene_new.csv: 
  (0) : fatal error C9999: *** exception during compilation ***
  Cg compiler terminated due to fatal errorcppoh_d: /home/dbm/bench/museum/dependencies/installed-boost/include/boost-1_37/boost/thread/pthread/mutex.hpp:45: boost::mutex::~mutex(): Assertion `!pthread_mutex_destroy(&m)' failed.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: PatrickHorn
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: cmake error if target listed under INSTALL(TARGETS) not built
keywords: cmake
description:
  In my case, I don't have mono compiled on 64-bit. MONO_FOUND is false, but monoscript is listed in the INSTALL(TARGETS ...) command.

  I suspect the same would be true if I chose to build without ogre support.


type: defect
component: Berkelium
priority: minor
owner: nobody
reporter: danielrh
status: closed
resolution: wontfix
summary: crash when visiting http://tinyvid.tv/
description:
  {{{
  #2  0xf62a9ec5 in (anonymous namespace)::WorkerThread::ThreadMain ()
     from /home/daniel/sirikata/dependencies/installed-awesomium/lib/libawesomium.so
  #1  0xf5a0e778 in net::CertVerifier::Request::DoVerify ()
     from /home/daniel/sirikata/dependencies/installed-awesomium/lib/libawesomium.so
  (gdb)
  #0  0xf5a2057e in net::X509Certificate::Verify ()
     from /home/daniel/sirikata/dependencies/installed-awesomium/lib/libawesomium.so
  }}}


type: enhancement
component: Sirikata
priority: minor
owner: PatrickHorn
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Native x64 build
description:
  It is difficult to install the required 32 bit packages and they are often inconveniently shipped with strange symbolic links required.
  Ideally a 64 bit build will be ready by release so that average linux users can download the native packages for the individual components and build them in a straightforward manner


type: defect
component: Sirikata
priority: critical
owner: danx0r
reporter: danielrh
milestone: Bornholm
status: closed
resolution: invalid
summary: Mouse wheel deals in local rather than global coordinates
description:
  when you're on the mac and right click-drag and accidentally scroll a few pixels you end up near zero rather than near the scene: this may be because the scroll wheel uses the camera's world coords rather than local coords.
  It can be very disorienting to a user since there's no way to undo a small scrollish action


type: task
component: Object Host (Client)
priority: trivial
owner: PatrickHorn
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Update awesomium build on mac
description:
  Awesomium deadlocks on mac and does not have refresh capability
  since the other mac libs are now up to speed it may make sense to rebuild things for the mac--on the other hand it may also be sensible to wait until our next refresh to head (when the current font issue is fixed--either on our end or theirs)


type: defect
component: Object Host (Client)
priority: major
owner: ewencp
reporter: danielrh
milestone: Multi-server Chat Demo
status: closed
resolution: invalid
summary: Extrapolation based on uninitialized values
description:
  {{{
  ==28487== Thread 1:
  ==28487== Conditional jump or move depends on uninitialised value(s)
  ==28487==    at 0x4B15DEC: Sirikata::ProxyObject::UpdateNeeded::operator()(Sirikata::Location const&, Sirikata::Location const&) const (ProxyObject.cpp:77)
  ==28487==    by 0x4AE8799: Sirikata::TimedWeightedExtrapolatorBase<Sirikata::Location, Sirikata::ProxyObject::UpdateNeeded, Sirikata::Time, Sirikata::Task::DeltaTime>::needsUpdate(Sirikata::Time const&, Sirikata::Location const&) const (Extrapolation.hpp:77)
  ==28487==    by 0x4AE896E: Sirikata::HostedObject::PerSpaceData::updateLocation(Sirikata::HostedObject*) (HostedObject.cpp:88)
  ==28487==    by 0x4AC7784: Sirikata::HostedObject::tick() (HostedObject.cpp:907)
  ==28487==    by 0x4AAD62D: Sirikata::ObjectHost::tick() (ObjectHost.cpp:290)
  ==28487==    by 0x808D90A: main (main.cpp:287)
  ==28487== 
  ==28487== Conditional jump or move depends on uninitialised value(s)
  ==28487==    at 0x4B15E0B: Sirikata::ProxyObject::UpdateNeeded::operator()(Sirikata::Location const&, Sirikata::Location const&) const (ProxyObject.cpp:77)
  ==28487==    by 0x4AE8799: Sirikata::TimedWeightedExtrapolatorBase<Sirikata::Location, Sirikata::ProxyObject::UpdateNeeded, Sirikata::Time, Sirikata::Task::DeltaTime>::needsUpdate(Sirikata::Time const&, Sirikata::Location const&) const (Extrapolation.hpp:77)
  ==28487==    by 0x4AE896E: Sirikata::HostedObject::PerSpaceData::updateLocation(Sirikata::HostedObject*) (HostedObject.cpp:88)
  ==28487==    by 0x4AC7784: Sirikata::HostedObject::tick() (HostedObject.cpp:907)
  ==28487==    by 0x4AAD62D: Sirikata::ObjectHost::tick() (ObjectHost.cpp:290)
  ==28487==    by 0x808D90A: main (main.cpp:287)
  ==28487== 
  ==28487== Conditional jump or move depends on uninitialised value(s)
  ==28487==    at 0x4B15E2A: Sirikata::ProxyObject::UpdateNeeded::operator()(Sirikata::Location const&, Sirikata::Location const&) const (ProxyObject.cpp:77)
  ==28487==    by 0x4AE8799: Sirikata::TimedWeightedExtrapolatorBase<Sirikata::Location, Sirikata::ProxyObject::UpdateNeeded, Sirikata::Time, Sirikata::Task::DeltaTime>::needsUpdate(Sirikata::Time const&, Sirikata::Location const&) const (Extrapolation.hpp:77)
  ==28487==    by 0x4AE896E: Sirikata::HostedObject::PerSpaceData::updateLocation(Sirikata::HostedObject*) (HostedObject.cpp:88)
  ==28487==    by 0x4AC7784: Sirikata::HostedObject::tick() (HostedObject.cpp:907)
  ==28487==    by 0x4AAD62D: Sirikata::ObjectHost::tick() (ObjectHost.cpp:290)
  ==28487==    by 0x808D90A: main (main.cpp:287)
  }}}


type: defect
component: LibCore Utilities
priority: minor
owner: nobody
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: wontfix
summary: Error with transfer manager DiskCache on shutdown
description:
  ==28621== Invalid read of size 4
  ==28621==    at 0x7CD8540: pthread_mutex_lock (in /lib32/libpthread-2.7.so)
  ==28621==    by 0x80BA0FC: boost::mutex::lock() (mutex.hpp:50)
  ==28621==    by 0x80BA1B8: boost::unique_lock<boost::mutex>::lock() (locks.hpp:338)
  ==28621==    by 0x80BA1E7: boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) (locks.hpp:224)
  ==28621==    by 0x80D885E: Sirikata::Transfer::EventTransferManager::downloadFinished(Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*) (EventTransferManager.hpp:77)
  ==28621==    by 0x80AB9E0: boost::_mfi::mf3<void, Sirikata::Transfer::EventTransferManager, Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*>::operator()(Sirikata::Transfer::EventTransferManager*, Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*) const (mem_fn_template.hpp:384)
  ==28621==    by 0x80ACA15: void boost::_bi::list4<boost::_bi::value<Sirikata::Transfer::EventTransferManager*>, boost::_bi::value<Sirikata::Transfer::RemoteFileId>, boost::_bi::value<Sirikata::Transfer::Range>, boost::arg<1> >::operator()<boost::_mfi::mf3<void, Sirikata::Transfer::EventTransferManager, Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*>, boost::_bi::list1<Sirikata::Transfer::SparseData const*&> >(boost::_bi::type<void>, boost::_mfi::mf3<void, Sirikata::Transfer::EventTransferManager, Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*>&, boost::_bi::list1<Sirikata::Transfer::SparseData const*&>&, int) (bind.hpp:436)
  ==28621==    by 0x80ACA61: void boost::_bi::bind_t<void, boost::_mfi::mf3<void, Sirikata::Transfer::EventTransferManager, Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*>, boost::_bi::list4<boost::_bi::value<Sirikata::Transfer::EventTransferManager*>, boost::_bi::value<Sirikata::Transfer::RemoteFileId>, boost::_bi::value<Sirikata::Transfer::Range>, boost::arg<1> > >::operator()<Sirikata::Transfer::SparseData const*>(Sirikata::Transfer::SparseData const*&) (bind_template.hpp:32)
  ==28621==    by 0x80ACA83: boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf3<void, Sirikata::Transfer::EventTransferManager, Sirikata::Transfer::RemoteFileId const&, Sirikata::Transfer::Range const&, Sirikata::Transfer::SparseData const*>, boost::_bi::list4<boost::_bi::value<Sirikata::Transfer::EventTransferManager*>, boost::_bi::value<Sirikata::Transfer::RemoteFileId>, boost::_bi::value<Sirikata::Transfer::Range>, boost::arg<1> > >, void, Sirikata::Transfer::SparseData const*>::invoke(boost::detail::function::function_buffer&, Sirikata::Transfer::SparseData const*) (function_template.hpp:152)
  ==28621==    by 0x4886D7D: boost::function1<void, Sirikata::Transfer::SparseData const*>::operator()(Sirikata::Transfer::SparseData const*) const (function_template.hpp:989)
  ==28621==    by 0x48827DC: Sirikata::Transfer::DiskCacheLayer::workerThread() (DiskCacheLayer.cpp:304)
  ==28621==    by 0x80AE679: boost::_mfi::mf0<void, Sirikata::Transfer::DiskCacheLayer>::operator()(Sirikata::Transfer::DiskCacheLayer*) const (mem_fn_template.hpp:49)
  ==28621==  Address 0x1b4966b4 is not stack'd, malloc'd or (recently) free'd
  cppoh_d: /home/daniel/sirikata/dependencies/installed-boost/include/boost-1_37/boost/thread/pthread/mutex.hpp:50: void boost::mutex::lock(): Assertion `!pthread_mutex_lock(&m)' failed.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: invalid
summary: Crash when deleting an object you do not control
description:
  {{{
  #6  0xf7dc6bfa in Sirikata::ObjectHostProxyManager::destroyViewedObject (
      this=0x81c8c68, newObj=@0xed483c24, viewer=0x0)
      at /home/daniel/sirikata/liboh/src/ObjectHostProxyManager.cpp:66
  66              iter->second.viewers.erase(viewiter);
  (gdb) print *viewiter
  $3 = (class Sirikata::QueryTracker * const&) @0xed4a8fec: 0x25
  (gdb)                                                               
  }}}

  {{{
  #4  0xf7dcb568 in boost::unordered_detail::hash_table_data_equivalent_keys<std::allocator<Sirikata::QueryTracker*> >::erase (this=0xed49c71c, r=
        {bucket_ = 0xed4a8fe4, node_ = 0xed4a8fe4})
      at /home/daniel/sirikata/dependencies/installed-boost/include/boost-1_37/boost/unordered/detail/hash_table_impl.hpp:965
  #5  0xf7dcb611 in boost::unordered_multiset<Sirikata::QueryTracker*, boost::hash<Sirikata::QueryTracker*>, std::equal_to<Sirikata::QueryTracker*>, std::allocator<Sirikata::QueryTracker*> >::erase (this=0xed49c70c, position=
          {<boost::iterator<std::forward_iterator_tag,Sirikata::QueryTracker*,int,Sirikata::QueryTracker* const*,Sirikata::QueryTracker* const&>> = {<boost::detail::iterator_base<std::forward_iterator_tag,Sirikata::QueryTracker*,int,Sirikata::QueryTracker* const*,Sirikata::QueryTracker* const&>> = {<std::iterator<std::forward_iterator_tag,Sirikata::QueryTracker*,int,Sirikata::QueryTracker* const*,Sirikata::QueryTracker* const&>> = {<No data fields>}, <No data fields>}, <No data fields>}, base_ = {bucket_ = 0xed4a8fe4, node_ = 0xed4a8fe4}})
      at /home/daniel/sirikata/dependencies/installed-boost/include/boost-1_37/boost/unordered/unordered_set.hpp:585
  #6  0xf7dc6bfa in Sirikata::ObjectHostProxyManager::destroyViewedObject (
      this=0x81c8c68, newObj=@0xed483c24, viewer=0x0)
      at /home/daniel/sirikata/liboh/src/ObjectHostProxyManager.cpp:66
  #7  0xf7dc6d82 in Sirikata::ObjectHostProxyManager::destroyObject (
      this=0x81c8c68, newObj=@0xed4a339c)
      at /home/daniel/sirikata/liboh/src/ObjectHostProxyManager.cpp:79
  #8  0xf7bbb3c7 in Sirikata::Graphics::OgreSystem::MouseHandler::deleteObjectsAction (this=0x8494a80)
  }}}


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: invalid
summary: Deleting an object with del does not remove it from Space
description:
  hitting delete on an object only removes it from the scenegraph, not from the actual ObjectHost and hence it is still visible


type: defect
component: Sirikata
priority: major
owner: danielrh
reporter: danielrh
milestone: Bornholm
status: closed
resolution: fixed
summary: Cap at max framerate + don't hose CPU
description:
  The main loop needs a sleep to maintain a max framerate

  it may also wish to run  2 or 3 physics frame per graphics frame depending on the framerate (or idle instead of running 1 gfx per phy)


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: kturkowski
status: closed
resolution: fixed
summary: Sirikata crashes if mouse wheel is operated before Sirikata is fully booted
description:
  Sirikata crashes if mouse wheel is operated before Sirikata is fully booted.
  To duplicate:
  (1) Launch sirikata as usual.
  (2) As soon as the window pops up, rotate the scroll wheel on top of the mouse

  It gets into a weird state. Not all of the scene is read in. Sometimes it crashes. Sometimes it exits with an error.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: kturkowski
status: closed
resolution: invalid
summary: Crash in Cg compiler when starting up, sometimes
description:
  I see the following error message, sometimes, upon startup:

      (0) : fatal error C9999: *** exception during compilation ***
      Cg compiler terminated due to fatal error

  It usually succeeds after several more attempts.


type: defect
component: Berkelium
priority: minor
owner: ewencp
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Make Nightlies work with Chromium (pathing issue)
description:
  Right now chromium depends on certain image and html files to load the browser. 
  These files should be installed to a directory with the CMakeLists INSTALL command and the program should look for the installed directory in addition to the source location directory


type: defect
component: Sirikata
priority: critical
owner: nobody
reporter: danx0r
status: closed
resolution: fixed
summary: Import bug causes corrupt material scripts
description:
  this is the old delegate missing meru:/// bug (acc to drh)
  Meru had a work-around but Sirikata doesn't deal correctly with these misnamed delegates in Ogre material scripts

  Problem is compounded by multiple CDN's -- a broken new skydome actually broke the old skydome on sirikata.com/content, but it comes up randomly because the files on stanford.edu are still OK -- nasty!


type: task
component: Sirikata
priority: minor
owner: ewencp
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Change Buildbot timeout to > 1200 seconds
description:
  The build is timing out since it is now taking longer than 1200 seconds.

  http://ahoy:8010/builders/windowsxp-vc9-sp1-full-build/builds/51/steps/Release%20Build/logs/stdio


type: defect
component: Sirikata
priority: major
owner: pathorn
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: invalid
summary: Property download timeous should be configurable, not a magic 5 seconds
description:
  Right now HostedObject.cpp hardcodes a timeout of 5 seconds in 2 separate places for property and query retrieval.


type: defect
component: Sirikata
priority: major
owner: pathorn
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: invalid
summary: Properties should be retried if they timeout
description:
  If a timeout occurs, the request should be resent to the object in case a network split or something complicated happens in the meantime and it was dropped


type: defect
component: Space (Server)
priority: minor
owner: nobody
reporter: danx0r
status: closed
resolution: wontfix
summary: space can't find proximity on localhost
description:
  On a machine (Ubuntu 8.04) with no networking enabled, running proximity and then (after a suitable wait) space, produces this error:

  "Lost connection with proximity manager"

  Setting up a subnet with any IP address resolves the problem


type: defect
component: Sirikata
priority: minor
owner: nobody
reporter: danx0r
status: closed
resolution: fixed
summary: no shutdown key on Mac
description:
  there's no way for a user to shut down Sirikata on Mac OSX other than ctl-C in the shell.  We should enable apple+Q or some reasonable way to shut down the application.

  Ctl-C doesn't always leave things in a nice state.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: danx0r
status: closed
resolution: worksforme
summary: Staging misses content
description:
  setting up Staging/names.txt with the exact same data as on the CDN, and removing the CDN URL's, many pieces of data are never displayed.  I confirmed the validity of my local data by setting up a local HTTP server (pointing cdn.txt there) -- in that case, everything works normally and you see all assets.


type: defect
component: Berkelium
priority: major
owner: nobody
reporter: kturkowski
status: closed
resolution: fixed
summary: Pulldown menus don't work on Mac Awesomium
description:
  Pulldown menus don't work on the Macintosh version of Awesomium. Without this, it is difficult to create cross-platform user interfaces where screen space is an issue. 


type: defect
component: LibCore Utilities
priority: trivial
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: BoundingBox::contains doesn't handle epsilon properly
keywords: core util
description:
  The current implementation of BoundingBox doesn't handle the epsilon border properly.  Further, it should be documented whether positive epsilon means the bounding box effectively grows or shrinks.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: danx0r
status: closed
resolution: pending
summary: spotlights don't work as expected
description:
  attached is a scene file, lightbug.csv, that shows some of the issues with spotlights.  The cone lights the wall but not the picture on the wall; another picture facing away from the light is lit, and one more picture on the floor appears to have a point or soft cone light as well.

  I have tested this on the master branch of speedlimits/museum (tag 7578d)


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: danx0r
status: closed
resolution: invalid
summary: avatar/camera offset is wrong
description:
  if the scale of the avatar is not uniform, there is some problem where the actual camera location is not the reported location.  Apparently someone is not paying attention to the scale, or is incorrectly looking at scale.  The offset should be in global units, not adjusted by scale of the avatar

  problem can be seen in museum build, curator mode -- set scale of Avatar (in scenes/curator.env) to .5, .5, .5, and selection of paintings is off by some # of meters


type: defect
component: LibCore Utilities
priority: minor
owner: danielrh
reporter: ewencp
status: closed
resolution: fixed
summary: Network::Stream::BytesReceivedCallback restricts how receiving data can be handled
keywords: network stream sst
description:
  Currently Network::Stream::BytesReceivedCallback has this signature:

  std::tr1::function< bool(Chunk &)>

  The return value makes it difficult to handle flexibly.  For instance, I want to ensure that all data handling happens in a single IOStrand, which requires wrapping callbacks.  This isn't possible here because the return value can't be handled properly.  In this case the work around was to parse the incoming data and then post a real handler to the IOStrand.  However, this means that the functionality is both useless and a hindrance in these cases.

  I think this functionality should be removed.  If pausing read callbacks is necessary, then it should just be exposed as a method which the callback provided can invoke if it needs to pause things.  This is better anyway since the intent is explicit instead of being encoded in the return value.  Further, it works in all situations and doesn't cost anything since this code already needs to be thread safe.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
cc: danielrh
status: closed
resolution: fixed
summary: Network::Stream::SubstreamCallback shouldn't be called with NULL stream
description:
  Currently, when the last substream is destroyed, the SubstreamCallback for the stream is called with a NULL stream argument.

  The only place this functionality is used is in a test (SstTest.cpp), and if the functionality is really necessary, that should really be a separate callback.


type: defect
component: Berkelium
priority: major
owner: ewencp
reporter: ewencp
cc: danielrh pathorn
status: closed
resolution: fixed
summary: Remove Awesomium support
keywords: awesomium berkelium chromium
description:
  We're committed to using Berkelium from now on, and support is improving on all platforms.

  We should determine what the criteria are for removing support for Awesomium and gradually remove support for it.  Currently the WebView code is a crazy mess of ifdefs for Awesomium and Berkelium.

  Is any existing code depending on continued Awesomium support?

  When this is closed, both #14 and #62 can be closed as well since they are Awesomium specific.


type: task
component: Ogre Graphics Plugin
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Remove meruCompat layer
keywords: ogre meru compat
description:
  We're currently relying on only a few features in the meruCompat directory.  We should try to get rid of these, or if the features are generally useful, just transition them into the main project (either ogre plugin, liboh, or libcore).


type: defect
component: Sirikata
priority: trivial
owner: ewencp
reporter: ewencp
cc: danielrh PatrickHorn danx0r
status: closed
resolution: fixed
summary: Reorganize scripts and sample scenes
keywords: scripts contrib scene
description:
  Having random scripts living in the top level directory isn't acceptable.  These have to be moved around and we need to verify a default scene still builds and runs on a fully clean installation (since previous scene.db's can trick the build system).

  We need to decide on a system/deployment level scripting layout, especially if we want separate scripts/ and contrib/ directories or if we aren't going to make that distinction


type: defect
component: Sirikata
priority: blocker
owner: jterrace
reporter: ewencp
cc: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: CDN scripts need to be in the repository
keywords: cdn script
description:
  Even if we're not happy with them, their absence and the lack of CDN documentation makes it impossible for a third party to deploy the full system.

  Getting anything in place so that people could work off it would be good.

  Depends on #70 since we need a real script layout first.


type: defect
component: PBJ/Protobuf Wire Formt
priority: major
owner: ewencp
reporter: ewencp
cc: danielrh
status: closed
resolution: fixed
summary: uint16 not handled in pbj properly
description:
  uint16 doesn't seem to be handled properly, causing compile errors.  Looks like it just needs a range check and cast in a few places.

  {{{
  /home/ewencp/sirikata.sirikata/liboh/scripts/csharp/protocol/Behaviors.pbj.cs(258,66): error CS1502: The best overloaded method match for `PBJ._PBJ.ValidateUint16(ushort)' has some invalid arguments
  /home/ewencp/sirikata.sirikata/externals/pbj/PBJ.cs(1343,20): (Location of the symbol related to previous error)
  /home/ewencp/sirikata.sirikata/liboh/scripts/csharp/protocol/Behaviors.pbj.cs(258,66): error CS1503: Argument `#1' cannot convert `uint' expression to type `ushort'
  /home/ewencp/sirikata.sirikata/liboh/scripts/csharp/protocol/Behaviors.pbj.cs(261,33): error CS1502: The best overloaded method match for `PBJ._PBJ.CastUint16(ushort)' has some invalid arguments
  /home/ewencp/sirikata.sirikata/externals/pbj/PBJ.cs(1404,22): (Location of the symbol related to previous error)
  /home/ewencp/sirikata.sirikata/liboh/scripts/csharp/protocol/Behaviors.pbj.cs(261,33): error CS1503: Argument `#1' cannot convert `uint' expression to type `ushort'
  }}}


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
cc: danielrh pathorn
status: closed
resolution: fixed
summary: ADD_PBJ_TARGET doesn't allow multiple pbj files using the same namespace/package
keywords: pbj
description:
  The way ADD_PBJ_TARGET generates a _protobuf.cc file that includes all the other generated .cc files makes it impossible to have two pbj files in the same library that use the same namespace since the generated code relies on static variables (GOOGLE_PROTOBUF_DECLARE_ONCE) which conflict if the two files have the same namespace.

  One solution is to have ADD_PBJ_TARGET just output that list of files instead of generating a new file, and using that output variable to add the files to the appropriate targets.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
cc: PatHorn danielrh
status: closed
resolution: fixed
summary: Make berkelium build standalone and sirikata handle this properly
description:
  In order to be useful to other projects berkelium needs to be able to build as a standalone library and demo app.  All the pieces are already there, and there is a branch on the berkelium repository for this:

  http://github.com/sirikata/berkelium/tree/standalone

  However, Sirikata needs to be updated to fix this before the changes can be pushed to the main branch of berkelium.  This requires:

  1. Updating the dependencies build scripts to use Berkelium's dependencies build scripts.  This needs to happen for all platforms.
  2. Update Sirikata to invoke the right parts of Berkelium's build.

  Because the dependencies are in svn repositories, this is a bit of a pain to orchestrate and make a gradual upgrade.  I'm attaching the patches I have so far to hopefully help push this forward.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: invalid
summary: Random Query Tracker returned from ObjectHostProxyManager: could get deleted before response
description:
  Right now more than one camera may view an object
  if the camera gets deleted but another camera can see the objects the queries get dropped

  also the bandwidth between 2 objects could be quite low if a random camera is used and maybe the closer or more relevant camera should be selected to do the query


type: defect
component: LibCore Utilities
priority: critical
owner: PatrickHorn
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: invalid
summary: downloaded http URL's are cached without expiration
description:
  since HTTP URL's are hashed by the URL string, the cache is never removed and they are never updated if someone changes one


type: defect
component: Sirikata
priority: minor
owner: PatrickHorn
reporter: danielrh
status: closed
resolution: invalid
summary: Middle click gets stuck down when you zoom then click on a webview
description:
  When you use the middle mouse button to zoom around a scene then click a webview, the zoom gets stuckand the webview will resize


type: defect
component: Ogre Graphics Plugin
priority: major
owner: PatrickHorn
reporter: danielrh
status: closed
resolution: fixed
summary: Resize webview gets sent to large float value
description:
  when resizing an object, sometimes that object's coordinates get thrown out to a very large float position


type: defect
component: Object Host (Client)
priority: major
owner: nobody
reporter: PatrickHorn
status: closed
resolution: fixed
summary: HostedObject should implement PositionListener to know when position changes
description:
  Currently, HostedObject polls each object in the Object Host. We already have a PositionListener interface that receives all position updates triggered within the Object Host, so if we listen to that, we can avoid sending messages to LOC except for those objects that actually moved.

  This should also help the CPU usage in space and proximity services when we spam update messages every frame.


type: enhancement
component: Sirikata
priority: major
owner: PatrickHorn
reporter: danielrh
status: closed
resolution: invalid
summary: TTL for object property responses
description:
  Clients should know how long the properties are "valid" for so they know when to poll for them unless a subscription is necessary


type: defect
component: LibCore Utilities
priority: critical
owner: danielrh
reporter: danielrh
status: new
summary: Rogue TCP connections leak a few bytes
description:
  Right now Rogue TCP connections that claim to have an unpaired connection may sit around in a hashtable. They need to have some timeout to get cleaned up


type: defect
component: PBJ/Protobuf Wire Formt
priority: major
owner: bhupc
reporter: ewencp
cc: danielrh
status: closed
resolution: fixed
summary: PBJ should output a forward declarations header for use in headers
description:
  Currently if you want to have helper methods in a class that use PBJ messages as arguments you need to either manually forward declare them (a real pain when they are in nested namespaces), use PIMPL to move the real work to the cpp, or include the pbj-generated header directly. A better strategy for flexibility and compile times would be to generate two headers from pbj, the regular X.pbj.hpp and an X.decls.pbj.hpp, where the latter just has forward declarations.


type: defect
component: Sirikata
priority: major
owner: danielrh
reporter: danielrh
milestone: Public Alpha Release
status: closed
resolution: fixed
summary: Sirikata Headers vulnerable to duplicate source object security bug
description:
  Since some of our code uses protocol buffers directly (eg the scripts) and protocol buffers accepts the last value in a proto file when there are duplicates, users could forge their source and destination fields to fool the users into thinking their messages came from someone else.

  A resolution should probably include an upgrade to the sirikata header format to separate out the layers more appropriately


type: defect
component: Sirikata
priority: critical
owner: nobody
reporter: danielrh
status: closed
resolution: invalid
summary: Space crash when duplicate packets arrive from a single object stream
description:
  When the streamID is modded by 10, a default client connecting to the space will cause deep memory corruption in mActiveStreams.
  Cause unknown

  To reproduce 
  #define TRIGGER_SPACE_BUG
  in ASIOReadBuffer.cpp and change TcpsstPlugin to use base64


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: danielrh
status: closed
resolution: fixed
summary: UUID::Hasher is slow
description:
  This turns out to be a major bottleneck under very heavy packet loads--ideally it will be placed in the header and a simpler hashing function


type: defect
component: Sirikata
priority: minor
owner: nobody
reporter: ewencp
status: new
summary: Dependency build on Ubuntu 10.04 doesn't work with system boost installed.
description:
  The build of Ogre failed because its trying to use the system boost, which is version 1.40, but apparently isn't compatible (some problem with boost::function0).


type: enhancement
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
status: closed
resolution: invalid
summary: primitive to Clear Script State
description:
  We need to clear the script state. An important use case is: we add to the callback list for a particular pattern and running the same script again and again just adds to the callback list. 
  One way to do this would be clear all the variables and fields of the JSObjectScript


type: enhancement
component: JavaScript/Emerson Plugin
priority: blocker
owner: bhupc
reporter: bhupc
status: closed
resolution: fixed
summary: Message constructor
description:
  Currently, there is no way for the script user to know who sent the message. There should be a reliable way of knowing for the script who is the sender of a message. There could be other fields of the message which might be added as part of this enhancement.


type: defect
component: Space (Server)
priority: minor
owner: ewencp
reporter: ewencp
status: new
summary: Statistics not necessarily flushing to disk on Windows
description:
  Statistics.cpp has unix-specific logic for flushing to disk, this needs to be ported to windows. See libcbrcore/src/Statistics.cpp.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: new
summary: TimeSync in cbr code doesn't support windows
description:
  TimeSync currently exec's a python process to get time syncing, which isn't supported on windows. An alternative that supports windows needs to be added. See libcbrcore/src/TimeSync.cpp.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: __packed__ attribute in SegmentedRegion not cross platform
description:
  Many structs related to SegmentedRegion (libcbrcore/include/sirikata/cbrcore/SegmentedRegion.hpp) are marked as packed, but this only works under GCC.  It looks like maybe they are marked that way for serialization purposes. This either needs to be cross platform if its only for local purposes, or use a real serialization library if its to ship between servers.


type: defect
component: Sirikata
priority: trivial
owner: ewencp
reporter: ewencp
status: new
summary: Don't build demos from libraries
description:
  Currently we build demo applications (glut_demo, glut_input, ppmrender from Berkelium).  We shouldn't bother since these should be tested.

  This may require changes in those projects' CMakeLists to be able to avoid building those targets.


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: nobody
reporter: bhupc
status: closed
resolution: fixed
summary: Timeout callbacks not getting cleared with system.reboot()
description:
  we should clear out the timeout callbacks with the system.reboot.  Can JSEventListener listen to the timeout events too..Ideally it should.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Display error in cppoh when connection to space server fails
description:
  Currently if a connection to the space server can't be made cppoh (or rather, the Ogre plugin) just hangs and doesn't display anything. We need to display a message or something, at a minimum to the console, so its easier to notice that its just a connectivity problem.


type: defect
component: Sirikata
priority: major
owner: danielrh
reporter: ewencp
status: closed
resolution: fixed
summary: SstCloseTest doesn't complete under valgrind
description:
  When run under valgrind, SstCloseTest doesn't complete and shows the following errors.  This probably indicates a timing bug.

  Output:

  ========================================
  BEGIN TEST SstCloseTest.testCloseAllStream
  Error: Assert failed at /home/ewencp/sirikata/libcore/test/SstCloseTest.hpp:72: mSendReceiveMap[id]!=-1
  Error: Assert failed at /home/ewencp/sirikata/libcore/test/SstCloseTest.hpp:72: mSendReceiveMap[id]!=-1
  Data 0 only 0 != 131073
  Data 1 only 0 != 131073
  Data 2 only 43691 != 131073
  Data 0 only 0 != 131073
  Data 1 only 0 != 131073
  Data 2 only 43691 != 131073
  Data 0 only 0 != 131073
  Data 1 only 0 != 131073
  Data 2 only 43691 != 131073
  Data 0 only 0 != 131073
  Data 1 only 0 != 131073
  Data 2 only 43691 != 131073
  Data 0 only 0 != 131073
  Data 1 only 0 != 131073
  Data 2 only 43691 != 131073
  Data 0 only 0 != 131073
  Data 1 only 0 != 131073


type: defect
component: Berkelium
priority: major
owner: PatrickHorn
reporter: ewencp
cc: ewencp
status: closed
resolution: fixed
summary: Berkelium renderer processes don't exit cleanly if pipes are broken
keywords: berkelium
description:
  Hitting Ctrl-C in cppoh can cause the process to not shutdown cleanly, and this causes the pipes to the berkelium renderer processes to be broken.  The renderer process then just seems to stick around forever.

  Note that because of the fork + exec, in the process list they appear to be cppoh process, but are actually the renderer processes.


type: defect
component: Berkelium
priority: major
owner: PatrickHorn
reporter: Kevinst
status: closed
resolution: pending
summary: Selecting text in textboxes does not work
keywords: select text textbox
description:
  How to reproduce?

  Use glu_input and go to http://www.google.com
  Type in some text
  Try to select part of the text with your keyboard or mouse.

  Unfortunately that does not work.

  Best Regards

  This ticket concerns Berkelium but however I do not find this component in the ticket options.


type: enhancement
component: Berkelium
priority: major
owner: PatrickHorn
reporter: PatrickHorn
status: new
summary: Better C++/Javascript interface
description:
  Currently, the only way to communicate back and forth is calling executeJavascript, and in return calling externalHost.postMessage.

  With a bit of javascript glue code, it should be possible to have a much nicer API, similar to that in the original awesomium library.

  In the case of JSON objects, perhaps just the serialized string would be enough.


type: defect
component: Space (Server)
priority: major
owner: ewencp
reporter: danielrh
status: closed
resolution: fixed
summary: Assertion `length <= MAX_PAYLOAD_SIZE' failed.
keywords: pinto
description:
  After a while I get this kind of error. Usually I have to logout and login several times. I suspect the returned results from prox are going up because objects aren't being cleaned out. Either way no number of objects should cause an assert in the space code.

  space_d: /home/daniel/dev/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:587: Sirikata::uint64 Sirikata::Connection<EndPointType>::sendData(const void*, Sirikata::uint32, bool) [with EndPointType = Sirikata::UUID]: Assertion `length <= MAX_PAYLOAD_SIZE' failed.

  {{{

  space_d: /home/daniel/dev/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:587: Sirikata::uint64 Sirikata::Connection<EndPointType>::sendData(const void*, Sirikata::uint32, bool) [with EndPointType = Sirikata::UUID]: Assertion `length <= MAX_PAYLOAD_SIZE' failed.

  Program received signal SIGABRT, Aborted.
  #2  0x00007ffff47d1941 in *__GI___assert_fail (
      assertion=0x613d5d "length <= MAX_PAYLOAD_SIZE", 
      file=<value optimized out>, line=587, 
      function=0x6155e0 "Sirikata::uint64 Sirikata::Connection<EndPointType>::sendData(const void*, Sirikata::uint32, bool) [with EndPointType = Sirikata::UUID]") at assert.c:81
  #3  0x000000000055aa85 in Sirikata::Connection<Sirikata::UUID>::sendData (
      this=0x92bef0, data=0x7fffe000d128, length=1315, isAck=false)
      at /home/daniel/dev/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:587
  587	    assert(length <= MAX_PAYLOAD_SIZE);
  (gdb) print length
  $1 = 1315
  #4  0x0000000000571b96 in Sirikata::Connection<Sirikata::UUID>::datagram(void*, int, unsigned short, unsigned short, std::tr1::function<void ()(int, void*)>) (
      this=0x92bef0, data=0x7fffe803fc58, length=1358, local_port=2, 
      remote_port=2, cb=...)
      at /home/daniel/dev/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:1062
  1062	      sendData(  buffer.data(), buffer.size(), false );
  #5  0x00000000005a1912 in Sirikata::Proximity::poll (this=0x8f2a30)
      at /home/daniel/dev/sirikata/space/src/Proximity.cpp:383
  383	                                                         OBJECT_PORT_PROXIMITY, OBJECT_PORT_PROXIMITY, NULL);
  #6  0x00007ffff6d44914 in Sirikata::PollingService::indirectPoll (
      this=0x8f2a58)
      at /home/daniel/dev/sirikata/libcore/src/service/PollingService.cpp:55
  55	    poll();

  }}}


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Local space server regularly getting clearToMigrate error
description:
  The space server, when run locally and just with one cppoh client is regularly getting the error:

  LocalObjectSegmentation got clearToMigrate call which should be impossible with single server.


type: defect
component: Space (Server)
priority: major
owner: ewencp
reporter: danielrh
status: closed
resolution: fixed
summary: Parse failure when client start and stopped several times in a row
description:
  HOW TO REPRODUCE:
  ./space_d &
  ./cppoh_d
  q
  ./cppoh_d
  q
  ./cppoh_d
  q
  ./cppoh_d


  the fourth one is the killer

  cppoh_d: /home/daniel/dev/sirikata/liboh/src/HostedObject.cpp:967: void Sirikata::HostedObject::handleProximityMessage(const Sirikata::SpaceID&, Sirikata::uint8*, int): Assertion `parse_success' failed.

  Program received signal SIGABRT, Aborted.
  0x00007ffff060ba75 in *__GI_raise (sig=<value optimized out>)
      at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
  64	../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
  	in ../nptl/sysdeps/unix/sysv/linux/raise.c
  (gdb) up
  #1  0x00007ffff060f5c0 in *__GI_abort () at abort.c:92
  92	abort.c: No such file or directory.
  	in abort.c
  (gdb) 
  #2  0x00007ffff0604941 in *__GI___assert_fail (
      assertion=0x7ffff715759e "parse_success", file=<value optimized out>, 
      line=967, 
      function=0x7ffff7158b00 "void Sirikata::HostedObject::handleProximityMessage(const Sirikata::SpaceID&, Sirikata::uint8*, int)") at assert.c:81
  81	assert.c: No such file or directory.
  	in assert.c
  (gdb) 
  #3  0x00007ffff7119281 in Sirikata::HostedObject::handleProximityMessage (
      this=0x753a40, space=..., buffer=0xbc9988 "\t\006\367\034\005", len=1272)
      at /home/daniel/dev/sirikata/liboh/src/HostedObject.cpp:967
  967	    assert(parse_success);
  (gdb) list
  962	}
  963	
  964	void HostedObject::handleProximityMessage(const SpaceID& space, uint8* buffer, int len) {
  965	    Sirikata::Protocol::Prox::ProximityResults contents;
  966	    bool parse_success = contents.ParseFromArray(buffer, len);
  967	    assert(parse_success);
  968	
  969	    for(int32 idx = 0; idx < contents.addition_size(); idx++) {
  970	        Sirikata::Protocol::Prox::ObjectAddition addition = contents.addition(idx);


type: defect
component: Space (Server)
priority: major
owner: ewencp
reporter: danielrh
status: closed
resolution: fixed
summary: Objects do not disconnect from space after the object host quits
description:
  when I quit cppoh, it leaves stray objects around

  when the collada system did not name its objects by the hash of the ProxyObject, it would get several lights with the same name trying to attach to different scene nodes, causing a crash.

  THere's nothing wrong with having two lights.dae, so I fixed the bug, but it also indicates that every time I quit I leave ghosts of everything around.

  The way you notice it now is that if you startup space_d and then join with cppoh_d
  then quit and join again, the milk truck is brighter


type: defect
component: Sirikata
priority: critical
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Crash in ObjectHostConnectionManager::send due to using already deleted connection
description:
  Because of threading, ObjectHostConnectionManager::send() can cause a crash by using a connection after its been deleted.

  Stack trace:

  1 (meru@192.168.1.12) :  space_d: /home/meru/ewencp/sirikata.git/space/src/ObjectHostConnectionManager.cpp:128: bool Sirikata::ObjectHostConnectionManager::send(const Sirikata::ObjectHostConnectionManager::ConnectionID&, Sirikata::Protocol::Object::ObjectMessage*): Assertion `mConnections.find(conn) != mConnections.end()' failed.
  1 (meru@192.168.1.12) :  [New Thread 0xb14ffb90 (LWP 23132)]
  1 (meru@192.168.1.12) :  [New Thread 0xb00ffb90 (LWP 23150)]
  1 (meru@192.168.1.12) :  [Thread 0xb00ffb90 (LWP 23150) exited]
  1 (meru@192.168.1.12) :  [New Thread 0xaf8feb90 (LWP 23153)]
  1 (meru@192.168.1.12) :  [Thread 0xb44a1b90 (LWP 23116) exited]
  1 (meru@192.168.1.12) :  [Thread 0xb3ca0b90 (LWP 23117) exited]
  1 (meru@192.168.1.12) :  
  1 (meru@192.168.1.12) :  Program received signal SIGABRT, Aborted.
  1 (meru@192.168.1.12) :  [Switching to Thread 0xb349fb90 (LWP 23130)]
  1 (meru@192.168.1.12) :  0xb7f8b410 in __kernel_vsyscall ()
  1 (meru@192.168.1.12) :  #0  0xb7f8b410 in __kernel_vsyscall ()
  1 (meru@192.168.1.12) :  #1  0xb7358085 in raise () from /lib/tls/i686/cmov/libc.so.6
  1 (meru@192.168.1.12) :  #2  0xb7359a01 in abort () from /lib/tls/i686/cmov/libc.so.6
  1 (meru@192.168.1.12) :  #3  0xb735110e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
  1 (meru@192.168.1.12) :  #4  0x081d8d77 in Sirikata::ObjectHostConnectionManager::send ()
  1 (meru@192.168.1.12) :  #5  0x081d620a in Sirikata::ObjectConnection::send ()
  1 (meru@192.168.1.12) :  #6  0x081c5823 in Sirikata::LocalForwarder::tryForward ()
  1 (meru@192.168.1.12) :  #7  0x08190fe6 in Sirikata::Forwarder::serverMessageReceived ()
  1 (meru@192.168.1.12) :  #8  0x08179c58 in Sirikata::FairServerMessageReceiver::service ()
  1 (meru@192.168.1.12) :  #9  0x0817eb64 in boost::_mfi::mf0<void, Sirikata::FairServerMessageReceiver>::operator() ()
  1 (meru@192.168.1.12) :  #10 0x0817ee48 in boost::_bi::list1<boost::_bi::value<Sirikata::FairServerMessageReceiver*> >::operator()<boost::_mfi::mf0<void, Sirikata::FairServerMessageReceiver>, boost::_bi::list0> ()
  1 (meru@192.168.1.12) :  #11 0x0817ee8b in boost::_bi::bind_t<void, boost::_mfi::mf0<void, Sirikata::FairServerMessageReceiver>, boost::_bi::list1<boost::_bi::value<Sirikata::FairServerMessageReceiver*> > >::operator() ()
  1 (meru@192.168.1.12) :  #12 0x0817eea5 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, Sirikata::FairServerMessageReceiver>, boost::_bi::list1<boost::_bi::value<Sirikata::FairServerMessageReceiver*> > >, void>::invoke ()
  1 (meru@192.168.1.12) :  #13 0xb7c23d1d in boost::function0<void>::operator() ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #14 0xb7d16d43 in boost::asio::asio_handler_invoke<boost::function<void ()()> > () from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #15 0xb7d16d7d in boost_asio_handler_invoke_helpers::invoke<boost::function<void ()()>, boost::function<void ()()> > ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #16 0xb7d1dd5c in boost::asio::detail::strand_service::handler_wrapper<boost::function<void ()()> >::do_invoke ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #17 0x0817d038 in boost::asio::detail::strand_service::handler_base::invoke ()
  1 (meru@192.168.1.12) :  #18 0x0817fa48 in boost::asio::detail::strand_service::invoke_current_handler::operator() ()
  1 (meru@192.168.1.12) :  #19 0x0817fa61 in boost::asio::asio_handler_invoke<boost::asio::detail::strand_service::invoke_current_handler> ()
  1 (meru@192.168.1.12) :  #20 0x081837a3 in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::strand_service::invoke_current_handler, boost::asio::detail::strand_service::invoke_current_handler> ()
  1 (meru@192.168.1.12) :  #21 0x0818383d in boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::strand_service::invoke_current_handler>::do_call ()
  1 (meru@192.168.1.12) :  #22 0xb7c60980 in boost::asio::detail::handler_queue::handler::invoke ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #23 0xb7c7e7dc in boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> >::do_one ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #24 0xb7c7e9ab in boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> >::run ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #25 0xb7c7ea72 in boost::asio::io_service::run ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #26 0xb7d15927 in Sirikata::Network::IOService::runNoReturn ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/build/cmake/libsirikata-core_d.so
  1 (meru@192.168.1.12) :  #27 0x081db43e in boost::_mfi::mf0<void, Sirikata::Network::IOService>::operator() ()
  1 (meru@192.168.1.12) :  #28 0x081dbd76 in boost::_bi::list1<boost::_bi::value<Sirikata::Network::IOService*> >::operator()<boost::_mfi::mf0<void, Sirikata::Network::IOService>, boost::_bi::list0> ()
  1 (meru@192.168.1.12) :  #29 0x081dbdb9 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, Sirikata::Network::IOService>, boost::_bi::list1<boost::_bi::value<Sirikata::Network::IOService*> > >::operator() ()
  1 (meru@192.168.1.12) :  #30 0x081dbdd3 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, Sirikata::Network::IOService>, boost::_bi::list1<boost::_bi::value<Sirikata::Network::IOService*> > >, void>::invoke
  1 (meru@192.168.1.12) :      ()
  1 (meru@192.168.1.12) :  #31 0x081dcf37 in boost::function0<void>::operator() ()
  1 (meru@192.168.1.12) :  #32 0x081df4b9 in Sirikata::Thread::initThread ()
  1 (meru@192.168.1.12) :  #33 0x081dc85c in boost::_mfi::mf2<void, Sirikata::Thread, boost::function<void ()()>, itimerval>::operator() ()
  1 (meru@192.168.1.12) :  #34 0x081dc936 in boost::_bi::list3<boost::_bi::value<Sirikata::Thread*>, boost::_bi::value<boost::function<void ()()> >, boost::_bi::value<itimerval> >::operator()<boost::_mfi::mf2<void, Sirikata::Thread, boost::function<void ()()>, itimerval>, boost::_bi::list0> ()
  1 (meru@192.168.1.12) :  #35 0x081dc9a7 in boost::_bi::bind_t<void, boost::_mfi::mf2<void, Sirikata::Thread, boost::function<void ()()>, itimerval>, boost::_bi::list3<boost::_bi::value<Sirikata::Thread*>, boost::_bi::value<boost::function<void ()()> >, boost::_bi::value<itimerval> > >::operator() ()
  1 (meru@192.168.1.12) :  #36 0x081dc9c0 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf2<void, Sirikata::Thread, boost::function<void ()()>, itimerval>, boost::_bi::list3<boost::_bi::value<Sirikata::Thread*>, boost::_bi::value<boost::function<void ()()> >, boost::_bi::value<itimerval> > > >::run ()
  1 (meru@192.168.1.12) :  #37 0xb7f37b6e in thread_proxy ()
  1 (meru@192.168.1.12) :     from /home/meru/ewencp/sirikata.git/dependencies/installed-boost/lib/libboost_thread-gcc42-mt-1_37.so.1.37.0
  1 (meru@192.168.1.12) :  #38 0xb731a4fb in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
  1 (meru@192.168.1.12) :  #39 0xb7403e5e in clone () from /lib/tls/i686/cmov/libc.so.6
  1 (meru@192.168.1.12) :  The program is running.  Exit anyway? (y or n) [answered Y; input not from terminal]


type: defect
component: Sirikata
priority: blocker
owner: ewencp
reporter: ewencp
status: closed
resolution: duplicate
summary: Setting velocity on objects causes them to be removed from proximity results incorrectly
description:
  Even small velocities are triggering objects to be removed.  This could be a bug in the extrapolation code.


type: defect
component: Object Host (Client)
priority: major
owner: bmistree
reporter: ewencp
status: closed
resolution: fixed
summary: HostedObject should support multiple presences
description:
  The ODP interface has been converted to support multiple presences by indexing by SpaceObjectReference.  However, HostedObject still uses PerSpaceData, indexed only by SpaceID.  This needs to be converted to PerPresenceData, indexed by SpaceObjectReference.


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: ewencp
status: closed
resolution: fixed
summary: gzip compress cdn downloads
description:
  CDN downloads should support gzip compression since many are very compressible (collada and dds files).


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: ewencp
status: closed
resolution: fixed
summary: Caching for TransferMediator
description:
  The old TransferManager supported caching on disk and in memory.  The old classes to do this were implementation of CacheLayer. Either the same classes could be adapted, or the TransferMediator should incorporate caching directly.


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: ewencp
status: closed
resolution: fixed
summary: eof handling in HttpManager
description:
  HttpManager::handle_read doesn't seem to handle eof with 0 bytes_transferred properly.

  If you replace err != boost::asio::error::eof in the initial if block, sometimes large downloads trigger an infinite loop of handle_read because at some point it gets eof and bytes_transferred=0.  However, the current approach of getting rid of that clause seems incorrect.

  Since pipelining appears to be on, its also not clear why eof is being reached. Ultimately, though, this seems to be a bug in how eof and 0 bytes_transferred are handled: it doesn't look like the case where both occur in the same callback, which can happen and is valid, is handled properly.


type: defect
component: Ogre Graphics Plugin
priority: minor
owner: ewencp
reporter: ewencp
status: new
summary: Clicking and dragging doesn't work properly with a transparent WebView
description:
  It seems that the clicking and dragging code must be checking for transparent pixels because sliders work on WebViews that are not transparent, but fails for transparent ones.  For instance, instantiate a JQuery UI slider.  With transparency on, nothing work.  With it off, everything works fine.


type: defect
component: Ogre Graphics Plugin
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Transformations aren't fully applied to lights in Ogre plugin
description:
  The Meshdata structure provides 4x4 transformations, but Ogre only accepts translate/rotate/scale, so we don't currently apply full transformations. (See MeshEntity::createMesh under the Lights section.)  This is actually an incompatibility between COLLADA, which seems to allow arbitrary transformations, and Ogre, which restricts to certain (reasonable) forms.

  At a minimum, we should make a best effort to apply reasonable transformations in Ogre.


type: defect
component: Sirikata
priority: critical
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Time synchronization between space server and object host
description:
  We need to get some sort of time synchronization working between the space server and the object host.  Without this, object hosts started at significantly different times from the space server will be completely out of sync and objects can drift very far away.


type: defect
component: Sirikata
priority: critical
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Time information in connection requests and location updates is invalid
description:
  Currently, time information placed in location update packets is completely arbitrary.  It should use the best approximation of the current space server time.

  Depends on time synchronization with space server, see #116.


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
status: closed
resolution: fixed
summary: Emerson compiler does not compile array of arrays properly
description:
  Below statement ( valid in javscript and can be tested using jscompile )
  var z =  [
      [(qWqW + qXqX - qYqY - qZqZ) / d,
       2 * (qWqZ + qXqY) / d,
       2 * (qXqZ - qWqY) / d, 0], 
      [2 * (qXqY - qWqZ) / d,
       (qWqW - qXqX + qYqY - qZqZ) / d,
       2 * (qWqX + qYqZ) / d, 0], 
      [2 * (qWqY + qXqZ) / d,
       2 * (qYqZ - qWqX) / d,
       (qWqW - qXqX - qYqY + qZqZ) / d, 0], 
      [0, 0, 0, 1]];

  this is compiled to 

  var z = [ [ qWqW + qXqX - qYqY - qZqZ / d0 ] [ 01 ]  ] ;

  which is wrong.

  The parse tree generated is:

  (PROG (VARLIST (VAR z (COND_EXPR (POSTEXPR (ARRAY_LITERAL (COND_EXPR (POSTEXPR (ARRAY_LITERAL (COND_EXPR (DIV (POSTEXPR (EXPR_LIST (COND_EXPR (SUB (SUB (ADD (POSTEXPR qWqW) (POSTEXPR qXqX)) (POSTEXPR qYqY)) (POSTEXPR qZqZ))))) (POSTEXPR d))) (COND_EXPR (POSTEXPR 0))))) (COND_EXPR (POSTEXPR (ARRAY_LITERAL (COND_EXPR (POSTEXPR 0)) (COND_EXPR (POSTEXPR 1)))))))))))


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
status: closed
resolution: invalid
summary: import doesn't work with emerson
description:
  import directive used to actually eval a file in emerson is not working with the compiler. This directive is  handled special cased. 
  Emerson doesn't understand the import directive and even the js does not.We can put import in the global object or the global.system inorder to do an eval of the code.


type: defect
component: Berkelium
priority: major
owner: PatrickHorn
reporter: PatrickHorn
status: new
summary: Berkelium crashes on window.print()
keywords: crash
description:
  Can reproduce with "./glut_input 'javascript:window.print()'"

  Program received signal SIGSEGV, Segmentation fault.
  0x00007ffff51dbd82 in PrintDialogGtk::PrintDialogGtk(FilePath const&) ()
     from ../lib/liblibberkelium.so
  (gdb) bt
  #0  0x00007ffff51dbd82 in PrintDialogGtk::PrintDialogGtk(FilePath const&) ()
     from ../lib/liblibberkelium.so
  #1  0x00007ffff51dbe38 in PrintDialogGtk::CreateDialogImpl(FilePath const&) ()
     from ../lib/liblibberkelium.so
  #2  0x00007ffff536c3f9 in MessageLoop::RunTask(Task*) ()
     from ../lib/liblibberkelium.so


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Convert SSTImpl to use ODP interface instead of old ObjectMessageRouter interface
description:
  Currently SSTImpl relies on using the ObjectMessageRouter interface (and related classes) to route ODP messages.  This doesn't provide sufficient information to support multiple spaces.  It should instead be using the ODP Service and Port interfaces.

  This currently blocks removal of old routing interfaces from HostedObject.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Remove TransferManager class
description:
  The TransferManager has been superceded by TransferMediator, which has a more future-looking design. TransferManager needs to be removed and the resulting fallout cleaned up.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: cppoh should be able to run without loading Ogre
description:
  Ogre is currently hard coded in the cppoh binary to load. Instead, there should be a way to control which simulation plugins are loaded and we should have Ogre on by default.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Multiple generic mesh loading plugins should be supported, collada plugin should not be hard coded
description:
  The collada plugin is currently hard coded to load in cppoh and other loaders would not be supported.  The plugins to load should be specified as an argument.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary:
  Mesh loading plugins should support some sort of magic number scheme for determining which plugin to use to load some content

description:
  Currently we have checks for ".dae" all over the place.  We should be using some mechanism based on magic numbers, either requesting each plugin in turn try to load it, or have them register some magic numbers to narrow down the search.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Key bindings should be loadable from a config file
description:
  The key bindings are hard coded and are not necessarily intuitive.  We should be loading the bindings from a configuration file instead of hard coding them.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Clean up old ogre mesh loading code
description:
  All loading used to be from Ogre format and is in ogre/resourceManager.  Some of the code which is generic is still used to load from other mesh loaders, but this code should either be refactored to fit the mesh loading interface (i.e. convert to Meshdata and then get loaded in) or should be removed.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Catch error to create SDL window
description:
  Currently SDL window creation errors are not caught properly.  In particular, if SDL was built without proper GL support (e.g. because the driver wasn't installed properly) then errors values will be returned and ignored, triggering a segfault. The line SDL_GL_MakeCurrent(mWindowID,ctx); triggers the actual segfault, but the error could be caught earlier.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Running single unit test doesn't report errors
description:
  The TestListener is not being set up properly when a single test is being run, e.g. via ./tests_d OptionTest.  Running all tests via TestRunner::runAllTests() sets it up properly, but as a TestListener we don't have access.

  We need to figure out the full setup that enables us to customize all these features and get the reporting to be uniform.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Remove RoutableMessage and associated class and protocols
description:
  The core of the system no longer relies on RoutableMessage at all, using the ODP interface instead.  However, a few pieces of code still rely on it, notably Bullet and the storage layer.  This code is currently effectively dead, but most of it is still salvageable and useful.  The code using RoutableMessage needs to be cleaned up to avoid requiring it.

  Notable classes that should be removed are RoutableMessage, RoutableMessageHeader, RoutableMessageBody, and MessageService.


type: defect
component: Space (Server)
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Space server doesn't clean up SST connections from objects
description:
  The space server stores connections in the SpaceContext so they can later be retrieved, e.g. by the Location service to send updates. They aren't being cleaned up on disconnect.

  Instead of just cleaning them up, we should bundle all the basic information about an object into some session state in Server so it is easy to clean up. Other classes that need it should be able to retrieve this session information.  A good way to enable this might be to register the interface for looking up session information in SpaceContext instead of having SpaceContext directly store data.


type: defect
component: Berkelium
priority: major
owner: PatrickHorn
reporter: PatrickHorn
status: new
summary: onBeforeUnload modal dialog hang
description:
  selecting sign out from gmail with search text hangs berkelium

  #8  0x00007fd7d77efd08 in IPC::SyncChannel::WaitForReply(IPC::SyncChannel::SyncContext*, base::WaitableEvent*) () from ../lib/liblibberkelium.so
  #9  0x00007fd7d77efe36 in IPC::SyncChannel::SendWithTimeout(IPC::Message*, int)
      () from ../lib/liblibberkelium.so
  #10 0x00007fd7d665f6c7 in RenderThread::Send(IPC::Message*) ()
     from ../lib/liblibberkelium.so
  #11 0x00007fd7d668d256 in RenderView::runModalBeforeUnloadDialog(WebKit::WebFrame*, WebKit::WebString const&) () from ../lib/liblibberkelium.so


type: enhancement
component: Sirikata
priority: major
owner: tazim
reporter: bmistree
milestone: v0.0.11
status: closed
resolution: fixed
summary: Programmatic Animations
description:
  Figure out how to get animations to work in the system, have js script hook into them so can trigger them programmatically.


type: enhancement
component: Sirikata
priority: major
owner: tazim
reporter: bmistree
milestone: v0.0.11
status: closed
resolution: fixed
summary: Add collada support for animations
description:
  Parse collada files so that we can extract animation information about them.  (Note: you're thesis is more important.)


type: task
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Flocking birds test
description:
  Set up multiple space servers and object hosts.  Make sure that multiple birds will flock together.  (Do a pre and post animation version.)


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Make collada parsing handle different units
description:
  Collada files encode their units in the asset section and they are frequently *not* meters, which we currently assume. However, there is always a unit conversion for meters.  The collada plugin needs to be converted to apply the correct scaling transformation when this tag is detected.

  Without this fix, meshes with correct units in them will appear at incorrect sizes, e.g. a person in cm and a building in meters might appear similarly sized.


type: task
component: Sirikata
priority: critical
owner: ewencp
reporter: ewencp
milestone: User-generated Content Demo
status: closed
resolution: fixed
summary: Add nvidia texture tools as a dependency
description:
  This is an extremely useful library for dealing with textures. We could use it to generate dds files on the fly, preprocess textures into dds, generate mipmaps, generate cubemaps, etc.

  In order to get any of these done, we need to first get it building on all platforms as an optional dependency.

  See http://code.google.com/p/nvidia-texture-tools/ for more details.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: User-generated Content Demo
status: closed
resolution: fixed
summary: Add a dds compression stage for upload pipeline
description:
  We should be uploading compressed textures to the CDN when possible so they are ready for display when the client receives them, to reduce memory usage on the clients, and give pre-built mipmaps by default.  To do this we should build a reusable Meshdata processing stage which generates compressed versions of referenced textures.

  This should use the nvidia texture tools and therefore depends on # 145.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
cc: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Make "simulations" be triggered by objects rather than a centralized
description:
  Expose the SimulationFactory to HostedObject and allow it to instantiate a Simulation with one of its Presences as input. This takes the "magic" out of the display -- instead of selecting the first object as the camera and requiring a special object to be created at start up, the display should use the specified Presence/HostedObject.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Implement dummy C++ camera "script"
keywords: ewencp
description:
  Since objects should be handled entirely through scripts rather than having a few hard-coded special objects, we need a "camera" type script which has the basics for instantiating a display to interact with the world.

  We want this to be pure C++ so that it doesn't depend on the particular scripting language an application is using.  This should allow for an extremely minimal, but functional, world to be built using no scripting.

  This probably depends on #147.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
cc: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Remove special camera object from cppoh's main.cpp
description:
  We should be able to specify the camera object through the scene file or some other input rather than having it hard coded.

  Depends on #147 and #148.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: wontfix
description: For debugging sending the audio mixing.
summary:
  Add a way of programmatically message space server for audio events (send a wav file to a particular port)


type: defect
component: Sirikata
priority: critical
owner: ewencp
reporter: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Running headless cppoh doesn't always keep the objects running
description:
  Running cppoh headless, i.e. with --oh.sims=[], doesn't always keep the object host running -- it sometimes just exits. Presumably this is because there is no work left for the IOService, so it exits.  We need to figure out what the right way to specify that objects should remain is -- in particular, currently there's no way to tell that an object that hasn't specified any timers, communication, or anything else that would get it control again should stay alive. Perhaps just having an active connection to the space server should be sufficient, or it should be kept alive some other way.

  Currently this keeps us from running a standalone cppoh to keep static content in the world, independent of, e.g., avatars that connect to the world.


type: defect
component: Sirikata
priority: minor
owner: bhupc
reporter: bhupc
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: CSV file assumes "script_type" and "script_file" are next to each other in the format.
description:
  This needs to be fixed as these are optional and could be spread anywhere in the opening line of the file as is true with other Object parameters.


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
milestone: Multi-server Chat Demo
status: closed
resolution: pending
summary: Events on Proximity
description:
  Entities can subscribe for a proximity query. There should be events generated for the proximity query results. Emerson should provide an interface to register these proximity queries.

  The complete fix can be provided once the ticket 161 is closed. 


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: ewencp
reporter: bhupc
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Load the Emerson scripts from a configurable location
description:
  The requirement is:

  1. Load an Emerson script from a standard location which is not in build/cmake. Choose this appropriately

  2. Make this location configurable. Possibly, introduce a new configuration file for emerson which defines the macros for emerson. 


type: defect
component: Space (Server)
priority: critical
owner: ewencp
reporter: bhupc
cc: bhupc
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Need a message to update the solid angle query
description:
  Entities might require to update their solid angle query after connecting. This would be done by scripting through emerson. We need to provide this interface in the scripting language. Requires to add a  new message from the entity to the proximity server.  


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: prepare_collada doesn't recursively search for DAE's in regular directories
description:
  The ColladaDirectory::find_daes only searches under a single directory using warehouse style layout.  It should actually do a recursive search of the entire directory to find all dae files.


type: defect
component: Sirikata
priority: critical
owner: bhupc
reporter: bhupc
cc: bmistree
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Create a chat terminal for the Chat application
description:
  We need a chat webview for the demo. It is similar to the scripting prompt. This Chat prompt should be able to display messages from the other entities as well as display the messages that are sent by this entity.


type: defect
component: Sirikata
priority: critical
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Crash in parsing ObjectHostConnectionManager::handleConnectionRead
description:
  Very rarely this assertion fails in the space server:

  space_d: /home/kataspace/sirikata.git/space/src/ObjectHostConnectionManager.cpp:239: void Sirikata::ObjectHostConnectionManager::handleConnectionRead(Sirikata::ObjectHostConnectionManager::ObjectHostConnection*, Sirikata::Network::Chunk&, const std::tr1::function<void()>&): Assertion `parse_success == true' failed.

  So far this has only been spotted when connecting from KataJS, so this is not necessarily, strictly speaking, a bug in the space server.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Changes to properties from JS plugin are not reflected back to script
description:
  Changes to object properties(position, scale, etc) are successfully being pushed through the space server and received as updates back on the client. Other components see these changes properly, most notably Ogre which makes the changes visible. However, a sequence like

  system.presences[0].setScale(7);
  var new_scale = system.presences[0].getScale();

  Does not leave new_scale == 7, instead new_scale == 1 (or the previous value).


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Load configuration options from files
description:
  There should be a way to load configuration options from a file.  This should probably follow the usual semantics of using options from the following locations, prioritized in this order:

  1. Options read directly from the command line
  2. Options read from a file specified on the command line, e.g. --cfg=some.file.cfg
  4. Options read from a default location, like ~/.sirikata/config


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Remove script file property and methods from ObjectScript
description:
  Currently this is used when "serializing" an object for storage to a csv file. But this doesn't make sense since the object may have been modified interactively and may not even have a script.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
cc: bhupc bmistree
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Expose Session/Presence events to javascript ObjectScripts
description:
  One of the scripts (test/startupCamera.em) relies on the fact that scripts are not started until one connection is created.  Instead, JSObjectScript should implement SessionEventListener and expose the resulting events to the javascript code so it can respond to them.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Initialize ObjectScripts immediately instead of on connect calls
description:
  Scripts should be running all the time, and should be able to invoke connect() themselves.  They need to be initialized and run on request, e.g. when objects are created by factories, rather than waiting for the object to connect.

  To keep some tests working properly, this depends on #168 -- once scripts are initialized immediately, the startupCamera.em test script won't work properly since it immediately tries to start the graphics system.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Fix create_entity in jsobjectscript
description:
  Right now, create_entity does not do anything.  Need to fix it so that it actually creates a new entity.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Very rare crash due to assertion when connection not found
description:
  DELETING STREAM 686745544
  space: /home/ubuntu/sirikata.git/space/src/ObjectHostConnectionManager.cpp:121: bool Sirikata::ObjectHostConnectionManager::send(const Sirikata::ObjectHostConnectionManager::ConnectionID&, Sirikata::Protocol::Object::ObjectMessage*): Assertion `mConnections.find(conn) != mConnections.end()' failed.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: When user rotates, their velocity direction doesn't update
description:
  Should be able to turn while moving.  (Hold up arrow, press left arrow, and face different direction.)  Currently cannot.  Make change in ogre system mouse handler.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Clients of proximity must handle out of order proximity and location updates
description:
  Clients of the proximity system are automatically subscribed to updates from Loc, but this occurs asynchronously and the messages to the clients are also unordered. Therefore, clients need to handle location updates that arrive *before* the corresponding proximity update that adds the object.  This has been fixed in KataJS/KataSpace: https://github.com/sirikata/kataspace/issues/closed#issue/13 .  This is definitely an issue for liboh's HostedObject class, but may also be an issue for space server's acting as clients of each other's Proximity systems and for space servers acting as clients of the central pinto service.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: bmistree
status: closed
resolution: fixed
summary: Proximity may not be removing objects before switching trees
description:
  Every minute, I get a bunch of proximity additions from the space server.  These additions are probably to add the same objects.  However, I don't get any removals of those objects before I get the additions.  (Essentially, prox is telling me to add the same objects multiple times.)

  You can run liboh/plugins/js/scripts/test/testOnProxEvents.em (system.import("test/testOnProxEvents.em") ) to see this.


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: bmistree
status: closed
resolution: fixed
summary: Need sequence numbers on changes to mesh
description:
  If you change your mesh quickly twice in a row, and loc updates can arrive out of order, you might end up displaying the wrong mesh forever.  (Similar issue with bounds.)  

  Maybe loc updates should be over sst?  Maybe mesh changes and bounds changes should have sequence numbers so you can't do actions out of order?


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Need to expose other objects' (within prox query) positions
description:
  Create a new type of Emerson object that has x,y,and z information about entities in the virtual world.  Need to be careful about this object because will need to present that the object's x,y,and z information are invalidated when the entity the object is associated with leaves the proximity query set.  (Probably we'll just throw some type of error for now.  But it's a legitimate question what we should do in the long run.)


type: defect
component: Sirikata
priority: blocker
owner: bhupc
reporter: ewencp
milestone: Multi-server Chat Demo
status: closed
resolution: fixed
summary: Emerson doesn't compile for loops with i++ properly
description:
  This simple test code:

   x = [1, 2, 3];
   for(var i = 0; i < x.length; i++) {
     system.print(x[i]);
   }

  Gets compiled incorrectly. The standalone emerson compiler shows that it is converting the i++ into just i, so the loop will never complete.

  Currently you need to define EMERSON_COMPILE_ON to see this with the js plugin.


type: defect
component: Sirikata
priority: major
owner: bhupc
reporter: bhupc
status: closed
resolution: fixed
summary: Emerson scripting window broken
description:
  The scripting window seems to be no longer sending the message to the entity. So, anything you type on the scripting window does not execute.
  Further diagnosis shows the the callback being invoked for the chromium event sends out the parameters of the call as 

  strcmp = ExecScript

  strcmp = Command	xpM

  strcmp = system.print("hi");

  There seems to be some garbage appended towards the end for each of the argument and therefore string comparison is failing in the code which is not able to send the scripting message to the entity.


type: defect
component: JavaScript/Emerson Plugin
priority: critical
owner: bhupc
reporter: bhupc
status: closed
resolution: fixed
summary: Emerson compiler does not compile arrays and object literal correctly
description:
  test.em 

  a = {x:y, z:2, w:0}

  b = [1, 2, 3]


  output of emerson compiler is 

   a  =  { x : y, w : 0 } ;
  b  =  [ 1, 3 ] ;


  This is incorrect and requires immediate resolution..


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: ewencp
status: closed
resolution: fixed
summary: === not supported by emerson compiler
description:
  A simple test like

  if (typeof(Escape) === "undefined")
    Escape = {};

  causes the compiler to fail. === should be supported since there are times that you need the exact comparison.

  It looks like this is just a type in the grammar since IDENT and EQUALS are both using '=='. Attached is a patch which might fix it, but requires rebuilding the grammar which there doesn't appear to be a script for


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: ewencp
status: closed
resolution: fixed
summary: JSObjectScript::protectedEval doesn't handle emerson compile failures
description:
  Currently I get a SIGSEGV when the emerson compiler fails in JSObjectScript::protectedEval:

  Backtrace:

  Program received signal SIGSEGV, Segmentation fault.
  0x00007fffec793052 in ?? () from /lib/libc.so.6
  (gdb) bt
  #0  0x00007fffec793052 in ?? () from /lib/libc.so.6
  #1  0x00007fffecfd5a40 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) () from /usr/lib/libstdc++.so.6
  #2  0x00007fffde16a954 in Sirikata::JS::JSObjectScript::protectedEval (this=0x8d3840, em_script_str=..., new_ctx=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectScript.cpp:501
  #3  0x00007fffde16d5e6 in Sirikata::JS::JSObjectScript::import (this=0x8d3840, filename=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectScript.cpp:678
  #4  0x00007fffde187987 in Sirikata::JS::JSSystem::ScriptImport (args=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjects/JSSystem.cpp:198
  #5  0x00007fffde250350 in v8::internal::Builtin_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>) () from /home/ewencp/sirikata.sirikata/build/cmake/libscripting-js_d.so


  The offending line of code:
   String js_script_str = string(emerson_compile(em_script_str_new.c_str()));

  It looks like we just need to check the return value of emerson compile and handle the exception.


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: ewencp
status: closed
resolution: fixed
summary: typeof operator emits incorrect code
description:
  The typeof operator is emitting code without a space between 'typeof' and the operand, e.g.

   typeof Escape

  and

   typeof(Escape)

  both generate

   typeOfEscape

  instead of

   typeof Escape

  Note that it is both missing a space *and* has incorrect capitalization.


type: defect
component: Sirikata
priority: minor
owner: bhupc
reporter: bmistree
status: closed
resolution: fixed
summary: Non-braced if is broken in Emerson compiler
description:
  This code throws an error:

  if (true)
      system.print("\n\nShould print me\n\n");
  else
      system.print("\n\nShould never print me\n\n");

  This code does not:


  if (true)
  {
      system.print("\n\nShould print me\n\n");        
  }
  else
  {
      system.print("\n\nShould never print me\n\n");        
  }


  -----------------
  I think that just means that you're expecting curly-braces after if statements, while the language does not necessarily require it.


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
status: closed
resolution: fixed
summary: Serialization code doesn't serialize addressables
description:
  Addressable objects need to be serialized over the network. They are not getting recognized as addressable on the receiver side. 

  This problem is true for all the JSObjects that have been created. 


type: defect
component: Sirikata
priority: major
owner: bhupc
reporter: bmistree
status: closed
resolution: fixed
summary: Order of operations
description:
  Enter into a scripting console:
  system.print( (0+2)*(0+2));
  It will print the result 2.

  This is because the Emerson compiler takes the above string and turns it into:

  system.print( 0 + 2*0 + 2)

  Ie, it removes the parentheses.  Help!


type: defect
component: Sirikata
priority: major
owner: bhupc
reporter: bmistree
status: closed
resolution: fixed
summary: Seg fault from calling toString()
description:
  If I type system.print(system.math.rand().toString()), then I get a seg fault in the Emerson compiler.  Partial stack trace:


  -unknown source-(0)  : error 3 : 1139:1: postfixExpression : ( leftHandSideExpression ( '++' )? | leftHandSideExpression ( '--' )? );, at offset 0
  Program received signal SIGSEGV, Segmentation fault.
  0x00007fffdf3fc0b5 in displayRecognitionError () from libscripting-js_d.so
  (gdb) bt
  #0  0x00007fffdf3fc0b5 in displayRecognitionError () from libscripting-js_d.so
  #1  0x00007fffdf21c3bb in postfixExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:16637
  #2  0x00007fffdf21b55f in unaryExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:16161
  #3  0x00007fffdf21a7f9 in multiplicativeExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:15805
  #4  0x00007fffdf219fc4 in additiveExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:15567
  #5  0x00007fffdf219994 in shiftExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:15377
  #6  0x00007fffdf2184c6 in relationalExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:14713
  #7  0x00007fffdf2163a5 in equalityExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:13787
  #8  0x00007fffdf215909 in bitwiseANDExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:13445
  #9  0x00007fffdf214eb5 in bitwiseXORExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:13141
  #10 0x00007fffdf214461 in bitwiseORExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:12837
  #11 0x00007fffdf212fb9 in logicalANDExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:12229
  #12 0x00007fffdf2134dd in logicalORExpression (ctx=0x7511800) at /home/bmistree/code/cpp/sirikata/liboh/plugins/js/emerson/EmersonTree.cpp:12381


type: task
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: move all the decoding of visible and presence structs into single functions
description:
  Right now, have scattered throughout code in JSObjects/JSObjectsUtil, JSObjects/JSSystem, JSObjects/JSPresences separate decode methods.  Would be better to not have these multiple methods.  Likely, want to just have static methods associated with each struct that tries to decode object.  


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
status: closed
resolution: fixed
summary: The IF statement segfaults if there is no statement inside the if-block
description:
  if(condition)
  {

  }

  This will segfault. It is necessary to have a statement inside the if block. For example, following works fine.

  if(condition)
  {
    print();
  }


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: ewencp
status: closed
resolution: fixed
summary: Emerson compiler fails on function call in callback section of arrow syntax
description:
  The emerson compiler fails when there is a function call in the callback section of the arrow syntax, a common pattern when using bind:

    bind(this._handleScriptRequest, this) <- scriptRequestPattern;

  Regression test added as testBindArrowCallback.em


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: ewencp
status: closed
resolution: fixed
summary: Emerson compiler fails on chained function calls
description:
  When a function returns an object and another function is called on it, the compiler fails:

    var f = {};
    f.fun = function(x) {
        return this;
    };
    f.fun().fun().fun();

  Regression test added as testChainCall.em


type: defect
component: JavaScript/Emerson Plugin
priority: minor
owner: bmistree
reporter: ewencp
cc: bhupc
status: closed
resolution: fixed
summary:
  Emerson generates extra semicolons after if statements that cause it to break if you try to run the resulting code back through emerson

description:
  Currently, if you hand Emerson a non-bracketed if statement like this:

    if (x) print(y);

  it generates code like this:

    if (x) print(y)
    ;

  Even with bracketed ifs:

    if (x) {
      print(y);
    }

  it generates:

    if (x) {
      print(y);
    }
    ;

  It then cannot handle the empty second statement (the first was finished implicitly by the new line).  The easy fix is to change the code generation to ensure the semicolon isn't always placed there.

  Currently this is a problem because any serialized functions are run back through the emerson compiler, so the emerson compiler must be able to compile its own output.


type: defect
component: JavaScript/Emerson Plugin
priority: minor
owner: bmistree
reporter: ewencp
cc: bhupc
status: closed
resolution: fixed
summary: whitespace only script causes compiler crash
description:
  Using an empty string, or one with only whitespace (i.e. spaces or newlines) causes the compiler to crash with a parse error.


type: defect
component: JavaScript/Emerson Plugin
priority: minor
owner: nobody
reporter: ewencp
cc: bhupc bmistree
status: new
summary: Function call chained on a constructor invocation fails to compile
description:
  If you try to call a function directly after a constructor call it fails.

  This works (string literal):

     var trimmed = '  abc  '.replace(' ', '*', 'g');
     print(trimmed);

  but this doesn't:

     var trimmed = new String('  abc  ').replace(' ', '*', 'g');
     print(trimmed);

  See new regression test alt_regress/tests/testEmerson/testChainedConstructorCall.em


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: nobody
reporter: ewencp
cc: bhupc bmistree
status: closed
resolution: fixed
summary: Try-catch support missing
description:
  It seems like emerson currently just compiles out the catch portion of try-catch blocks: it generates the body of the try block, but ignores all exception handling code.

  Added a test at liboh/plugins/js/emerson/alt_regress/tests/testEmerson/testTryCatch.em.

  This is fairly critical since it means exceptions thrown by runtime calls (like eval, print, etc) cannot be caught by user code.


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: bhupc
status: closed
resolution: fixed
summary: some meshes with textures fail to download
description:
  duck.dae is an example. Failed with the following error


  HTTP status code = 404 instead of 200 during an HTTP name lookup (meerkat://cleopatra.cs.princeton.edu/jterrace/duck.dae/original/./duckCM.tga)
  Failed metadata download 16:42
  HTTP status code = 404 instead of 200 during an HTTP name lookup (meerkat://cleopatra.cs.princeton.edu/jterrace/duck.dae/original/./duckCM.tga) 16:42
  Failed metadata download


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: bhupc
cc: jterrace, ewencp, bmistree
status: closed
resolution: fixed
summary: add a callback for parser errors into the emerson script
description:
  There should be a way for the emerson script to handle parse exceptions and these exceptions can then be used by the emerson script to show in a customized way. 


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Location and proximity state become inconsistent on server crash
description:
  When a space server crashes and is brought back up, it triggers an inconsistency in replicated location and proximity state -- for instance, even though an object got disconnected from crashed server A, server B will still provide it as a result for a proximity query.

  When a connection to another server is lost, we need to clear out all state associated with it and then ensure the restored server gives us the right state (we need to handle the case of a network partition, in which case both sides need to actively clear state, and the case of a space server crash, in which case only one side needs to actively clear state).


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: non-tabular servermap
description:
  The only servermap implementations rely on files or on a single-space-server deployment to work properly. This isn't flexible enough. Instead, we need a servermap implementation which reads dynamically from a network service.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: accepted
summary: asynchronous ServerIDMap implementation
description:
  The current interface assumes . Since this is used in more than a few places, we need to carefully convert to an asynchronous interface.  A good way to proceed is to make the interface async, force async operations by IOService::post()ing the callbacks even though the lookup happens immediately locally, and getting that all working. Then bug #201 should be feasible to implement via a simple network lookup.


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bhupc
reporter: ewencp
status: closed
resolution: invalid
summary: emerson comma operator in expressions does not work properly
description:
  This

    1, 2, 3

  is valid syntax which should remain the same through the emerson -> js compiler and then evaluate to

    3

  Emerson is getting this wrong in some cases. In particular it was noticed that

    system.presences[0].setPosition( (1, 2, 3) )

  was compiled to

    system.presences[0].setPosition( 123 )


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: wmonroe4
status: closed
resolution: fixed
summary: Quaternion normal and inverse functions
description:
  Calls to util.Quaternion.normal give:

  [JS] ERROR: [JS] Uncaught exception:
  std/shim/quaternion.em:77: TypeError: Object <0.247404,0,0,0.968912> has no meth
  od 'div'
  {return this.div( len )
               ^
  TypeError: Object <0.247404,0,0,0.968912> has no method 'div'
      at Quaternion.normal (std/shim/quaternion.em:77:14)
      at unknown source
      at [object Object]._handleScriptRequest (std/script/scriptable.em:43:20)
      at std/core/bind.js:23:13

  (Should be this.scale(1 / len)?)

  Calls to util.Quaternion.inverse() give:

  [JS] ERROR: [JS] Uncaught exception:
  std/shim/quaternion.em:88: ReferenceError: Quaternion is not defined
  {return Quaternion( -this.x / len, -this.y / len, -this.z / len, this.w / len
          ^
  ReferenceError: Quaternion is not defined
      at Quaternion.<anonymous> (std/shim/quaternion.em:88:9)
      at unknown source
      at [object Object]._handleScriptRequest (std/script/scriptable.em:43:20)
      at std/core/bind.js:23:13

  (missing util?)


type: defect
component: Object Host (Client)
priority: major
owner: ewencp
reporter: danielrh
milestone: v0.0.5
status: closed
resolution: fixed
summary: HostedObject must position updates if they don't go through
description:
  Queues can be full and when a script does requestLocationUpdate, that update should be retried until the script sends another update.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: danielrh
status: closed
resolution: fixed
summary: Holding down a key will cause increasing lag
description:
  Based on a bisect the problem is caused by 

  0c76b180da86c2ac83fc944b7b2dc3d13d8d29cd
  2285e13b32095f1901be4198db9193fe201fac2b

  on linux.

  When the forward key is held down, the framerate slowly decreases... from realtime to 10 fps to 2 fps to 1 fps to 1 second per frame and potentially even worse.
  Something to do with this change of input is causing the performance to go down.

  when I try to break it's in

  (gdb) bt
  #0  0x00007fffdef375e0 in v8::Object::Set(v8::Handle<v8::Value>, v8::Handle<v8::Value>, v8::PropertyAttribute) () from libscripting-js_d.so
  #1  0x00007fffdee12efd in Sirikata::JS::Vec3Fill<Sirikata::Vector3<double> > (
      dest=..., src=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjects/JSVec3.hpp:50
  #2  0x00007fffdee12a5a in Sirikata::JS::Vec3Constructor (args=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjects/JSVec3.cpp:114
  #3  0x00007fffdef4c7c1 in v8::internal::Builtin_HandleApiCallConstruct(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>) () from libscripting-js_d.so


  --or--

  #1  0x00007ffff6d4dd22 in Sirikata::HostedObject::sendLocUpdateRequest (
      this=0x8b1180, space=..., oref=..., loc=0x7fffffffc660, orient=0x0, 
      bounds=0x0, mesh=0x0)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/src/HostedObject.cpp:1143
  1143	    }
  (gdb) 
  #2  0x00007ffff6d4ba0c in Sirikata::HostedObject::requestLocationUpdate (
      this=0x8b1180, space=..., oref=..., loc=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/src/HostedObject.cpp:947
  947	    sendLocUpdateRequest(space, oref,&loc, NULL, NULL, NULL);
  (gdb) up
  #3  0x00007ffff6d4bc15 in Sirikata::HostedObject::requestVelocityUpdate (
      this=0x8b1180, space=..., oref=..., vel=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/src/HostedObject.cpp:967
  967	    requestLocationUpdate(space,oref,tmv);
  (gdb) up
  #4  0x00007fffdee002d4 in Sirikata::JS::JSObjectScript::setVelocityFunction (
      this=0xe5f000, sporef=0xefda00, velVec=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjectScript.cpp:1605
  1605	    mParent->requestVelocityUpdate(sporef->space(),sporef->object(),velVec);
  (gdb) up
  #5  0x00007fffdee3bdd7 in Sirikata::JS::JSPresenceStruct::struct_setVelocity (
      this=0x1133140, newVel=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjectStructs/JSPresenceStruct.cpp:291
  291	    jsObjScript->setVelocityFunction(sporefToListenTo,newVel);
  (gdb) up
  #6  0x00007fffdee54087 in Sirikata::JS::JSPresence::setVelocity (args=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjects/JSPresence.cpp:351
  351	            return mStruct->struct_setVelocity(newVel);

  --or-- a few times

  #2  0x00007fffdee2d5ac in std::map<Sirikata::JS::JSSuspendable*, int, std::less<Sirikata::JS::JSSuspendable*>, std::allocator<std::pair<Sirikata::JS::JSSuspendable* const, int> > >::insert (this=0xf03ce0, __position=..., __x=...)
      at /usr/include/c++/4.4/bits/stl_map.h:540
  540	      { return _M_t._M_insert_unique_(__position, __x); }
  (gdb) 
  #3  0x00007fffdee2d1b2 in std::map<Sirikata::JS::JSSuspendable*, int, std::less<Sirikata::JS::JSSuspendable*>, std::allocator<std::pair<Sirikata::JS::JSSuspendable* const, int> > >::operator[] (this=0xf03ce0, __k=@0x7fffffffc900)
      at /usr/include/c++/4.4/bits/stl_map.h:450
  450	          __i = insert(__i, value_type(__k, mapped_type()));
  (gdb) 
  #4  0x00007fffdee28c52 in Sirikata::JS::JSContextStruct::struct_registerSuspendable (this=0xf03c60, toRegister=0xa342f80)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjectStructs/JSContextStruct.cpp:323
  323	    associatedSuspendables[toRegister] = 1;
  (gdb) 
  #5  0x00007fffdee40820 in JSTimerStruct (this=0xa342f80, jsobj=0xe5f000, 
      dur=..., callback=..., jscont=0xf03c60, ioserve=0x8af110)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjectStructs/JSTimerStruct.cpp:29
  29	        jscont->struct_registerSuspendable(this);
  (gdb) 
  #6  0x00007fffdedf99e5 in Sirikata::JS::JSObjectScript::create_timeout (
      this=0xe5f000, dur=..., cb=..., jscont=0xf03c60)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjectScript.cpp:1038
  1038	    JSTimerStruct* jstimer = new JSTimerStruct(this,dur,cb,jscont,ioserve);
  (gdb) up
  #7  0x00007fffdee2c0be in Sirikata::JS::JSContextStruct::struct_createTimeout (
      this=0xf03c60, dur=..., cb=...)
      at /home/daniel/dev/elysia/externals/sirikata/liboh/plugins/js/JSObjectStructs/JSContextStruct.cpp:471
  471	    return jsObjScript->create_timeout(dur, cb, this);


  --or--


  #4  0x00007ffff6d134a9 in Sirikata::BaseDatagramLayer<Sirikata::SpaceObjectReference>::getPort (this=0x1134700, ep=...)
      at /home/daniel/dev/elysia/externals/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:202
  202	        typename PortMap::iterator it = mAllocatedPorts.find(ep);
  (gdb) 
  #5  0x00007ffff6d0e913 in Sirikata::BaseDatagramLayer<Sirikata::SpaceObjectReference>::getOrAllocatePort (this=0x1134700, ep=...)
      at /home/daniel/dev/elysia/externals/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:208
  208	        ODP::Port* result = getPort(ep);
  (gdb) 
  #6  0x00007ffff6d07ddb in Sirikata::BaseDatagramLayer<Sirikata::SpaceObjectReference>::send (this=0x1134700, src=0x110d788, dest=0x110d7aa, data=0x7117918, 
      len=71)
      at /home/daniel/dev/elysia/externals/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:170
  170	        ODP::Port* port = getOrAllocatePort(*src);
  (gdb) 
  #7  0x00007ffff6d02ba2 in Sirikata::Connection<Sirikata::SpaceObjectReference>::sendSSTChannelPacket (this=0x110d780, sstMsg=...)
      at /home/daniel/dev/elysia/externals/sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:404
  404	    mDatagramLayer->send(&mLocalEndPoint, &mRemoteEndPoint, (void*) buffer.data(),


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
cc: bhupc
status: closed
resolution: fixed
summary: serialization loop bug
description:
  The serialization code currently seg faults if you try to send an object that has a cycle in it.  See attached file, which is sending object a.

  I'm taking care of it, since I already have to do something like this for the new pattern matching.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
cc: bhupc
status: closed
resolution: fixed
summary: serialization loop bug
description:
  The serialization code currently seg faults if you try to send an object that has a cycle in it.  See attached file, which is sending object a.

  I'm taking care of it, since I already have to do something like this for the new pattern matching.  But if you have any feedback, it'd be super appreciated.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
status: closed
resolution: fixed
summary: Two entries in presences array on create_presence
description:
  Doing something like:

    system.print(system.presences);
    system.create_presence(mesh, cb);
    system.print(system.presences);

  Ends up showing 1 presence on the first call, but 3 presences on the second call, so it looks like the presence is being added to the presences array twice.


type: enhancement
component: JavaScript/Emerson Plugin
priority: major
owner: bmistree
reporter: bhupc
milestone: v0.0.11
status: closed
resolution: fixed
summary: Change the syntax of the createSandbox call
description:
  The createSandbox call currently takes arguments for capabilities as boolean values. This seems to be very inconvenient for the scripters. We should instead have some convenient syntax. Some suggestions are: 

  1. Have a dictionary object of capabilities.
  2. Have flags for the capabilities and use the "|" for or-ing capabilities. (just like unix permissions )


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: nobody
reporter: wmonroe4
status: closed
resolution: fixed
summary: Vector syntax not accepted on left side of operator
description:
  When executing:
  {{{
  >>> system.print(<0, 1, 0> + <1, 0, 0>);
  }}}

  Expected:
  {{{
      { x: 1, y: 1, z: 0 }
  }}}

  Instead gives:
  {{{
  Exception: #1:{ #2:stack: SyntaxError: SyntaxError at line 1 position 5:
  170:1: statement : ( noOpStatement | ( msgRecvStatement )=> msgRecvStatement | statementBlock | variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | whenStatement | tryStatement | ( msgSendStatement )=> msgSendStatement );
      at [object Object].eval (std/shim.em:64:17)
      at [object Object]._handleScriptRequest (std/script/scriptable.em:44:20)
      at std/core/bind.js:23:13
      at [object Object].<anonymous> (std/shim.em:78:1)
      at std/core/bind.js:23:13, #3:message: SyntaxError at line 1 position 5:
  170:1: statement : ( noOpStatement | ( msgRecvStatement )=> msgRecvStatement | statementBlock | variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | whenStatement | tryStatement | ( msgSendStatement )=> msgSendStatement );, #4:name: SyntaxError }
  }}}

  Workaround: enclose left operand in parentheses:
  {{{
  >>> system.print((<0, 1, 0>) + <1, 0, 0>);
  #1:{ #2:x: 1, #3:y: 1, #4:z: 0 }
  }}}


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: jterrace
milestone: v0.0.7
status: closed
resolution: fixed
summary: Mesh URI host and scheme ignored
description:
  Right now, the transfer layer only looks at the path for mesh URIs and ignores the scheme, host, and port. It uses the cdn.host, cdn.service, and cdn.prefix settings to construct an HTTP request.

  We might want to allow multiple CDN servers per client. We might even want to support other schemes like file:///


type: enhancement
component: Sirikata
priority: major
owner: ewencp
reporter: jterrace
status: closed
resolution: fixed
summary: Instances aren't batched
description:
  For example, this tree has 6000 instances of a leaf:
  http://open3dhub.com/view/ayyyeung/models/finished_tree.dae/0

  When a geometry is instanced multiple times with the same material but different transforms, these can be batched into a single draw call. I was able to do this in Panda3d by using their RigidBodyCombiner (http://www.panda3d.org/apiref.php?page=RigidBodyCombiner). Can we do something similar with OGRE?


type: enhancement
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Batch instances across different Objects/Entities
description:
  If we load the same model a bunch of times, we aren't taking advantage of instancing. As Jeff points out in #216, panda3d has RigidBodyCombiner. Ogre has something similar for InstancedGeometry and StaticGeometry.  We should try to take advantage of this existing code if appropriate, or roll our own if necessary.

  Note that this is for instancing across Ogre Entities. #216 deals with instancing within a single model.


type: enhancement
component: Berkelium
priority: major
owner: nobody
reporter: intoinside
status: closed
resolution: fixed
summary: Double click support
description:
  Here are the file to add double click support to Berkelium. Files modified are:
  * src/renderwidget.hpp
  edit row 64
      virtual void mouseButton(unsigned int buttonID, bool down, int clickCount)=0;


  * src/renderwidget.cpp
  edit row 645
      void RenderWidget::mouseButton(unsigned int mouseButton, bool down, int clickCount) {

  add row 677
      if (down){
          event.clickCount = clickCount;


  * src/windowimpl.hpp
  edit row 118
      virtual void mouseButton(unsigned int buttonID, bool down, int clickCount);


  * src/windowimpl.cpp
  edit function
  void WindowImpl::mouseButton(unsigned int buttonID, bool down, int clickCount) {
      Widget *wid = getWidgetAtPoint(mMouseX, mMouseY, true);
      if (wid) {
          (wid)->mouseButton(buttonID, down, clickCount);
      }
  }


  * include/widget.hpp
  edit row 67
      virtual void mouseButton(unsigned int buttonID, bool down, int clickCount)=0;


  * include/window.hpp
  edit row 190
      virtual void mouseButton(unsigned int buttonID, bool down, int clickCount)=0;


  To send a double click event simply use:
  win->mouseButton(buttonID, true, 2);

  Bye


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: jterrace
cc: wmonroe4
status: closed
resolution: fixed
summary: Model being rendered inside-out
description:
  Something is wrong with rendering of this model:
  http://open3dhub.com/view/wmonroe4/wood.dae/0

  It renders as if it's inside-out. It almost looks transparent, but inspecting the materials, it doesn't have any transparency. Not sure what's going on.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Collada saving code doesn't save transparency information
description:
  If you have a MaterialEffectInfo within a Meshdata that has affecting == OPACITY, the collada saver loses that information. This means that a trivial no-op filter through meshtool, just doing load and save, will generate a mesh that renders differently.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Specular shading is disabled
description:
  Specular shading effect info isn't being added in the collada loader, so it will never be processed in the Ogre plugin. The world looks quite flag without any specular highlights.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: chrome.send() calls from GUI modules could conflict
description:
  Make sure GUI chrome.send() calls don't conflict between gui modules. Currently since they work from the same WebView they can conflict with each other if the requested event name is the same. We should automatically provide a wrapper for each GUI module which forces it to get its events prefixed with its module name. Then, on the Emerson side, we should make the GUI class add this prefix when registering listeners.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: closed
resolution: fixed
summary: Change the name of chrome.send
description:
  Provide a different name for chrome.send. The name is confusing, unnecessary, and probably reflects an older version dealing only with browser chrome (or we named it after the underlying Chromium/Chrome).


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: Refactor GUI modules to use private data and avoid global variables
description:
  Refactor gui modules to use private variables and avoid global variables as much as possible. They won't be entirely protected from each other, but they will at least avoid conflicts as much as possible. The samples that are built in can serve as examples for user provided GUIs so they also don't cause conflicts.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: Provide basic GUI framework for adding top-level GUI elements.
description:
  Provide a GUI framework so users aren't creating their own objects directly but instead request a DOM element become a GUI element like a dialog or dockable window.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Make GUIs dockable
description:
  GUIs should be dockable to the side of the window so they can be moved out of the way and arranged automatically.  This probably requires working with the underlying Ogre renderer since docking elements will require adjusting the viewport/camera settings.

  This probably depends on #225.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: system.reset() crashes when run on an avatar
description:
  It seems to have to do with reallocating the renderer when one continues to exist since the notification is only about an existing presence rather than a new one.

  Program received signal SIGABRT, Aborted.
  0x00007fffed903a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
  64	../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
  	in ../nptl/sysdeps/unix/sysv/linux/raise.c
  (gdb) bt
  #0  0x00007fffed903a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
  #1  0x00007fffed9075c0 in *__GI_abort () at abort.c:92
  #2  0x00007fffed8fc941 in *__GI___assert_fail (assertion=0x7ffff504f6d1 "!ms_Singleton", file=<value optimized out>, line=80, function=0x7ffff506b960 "Ogre::Singleton<T>::Singleton() [with T = Ogre::LogManager]") at assert.c:81
  #3  0x00007ffff4e4a0e1 in Singleton (this=<value optimized out>) at /home/ewencp/sirikata.sirikata/dependencies/ogre_src_v1-7-2/OgreMain/include/OgreSingleton.h:80
  #4  LogManager (this=<value optimized out>) at /home/ewencp/sirikata.sirikata/dependencies/ogre_src_v1-7-2/OgreMain/src/OgreLogManager.cpp:46
  #5  0x00007ffff687695a in Sirikata::Graphics::OgreSystem::initialize (this=0x531c000, viewer=..., presenceid=..., options=...) at /home/ewencp/sirikata.sirikata/libproxyobject/plugins/ogre/OgreSystem.cpp:534
  #6  0x00007ffff691f96b in Sirikata::Graphics::OgreSystem::create (ctx=0x905a80, obj=..., presenceid=..., options=...) at /home/ewencp/sirikata.sirikata/libproxyobject/plugins/ogre/OgreSystem.hpp:231
  #7  0x00007ffff691fd28 in std::tr1::_Function_handler<Sirikata::TimeSteppedQueryableSimulation* ()(Sirikata::Context*, std::tr1::shared_ptr<Sirikata::VWObject>, Sirikata::SpaceObjectReference const&, std::string const&), Sirikata::TimeSteppedQueryableSimulation* (*)(Sirikata::Context*, std::tr1::shared_ptr<Sirikata::VWObject>, Sirikata::SpaceObjectReference const&, std::string const&)>::_M_invoke(std::tr1::_Any_data const&, Sirikata::Context*, std::tr1::shared_ptr<Sirikata::VWObject>, Sirikata::SpaceObjectReference const&, std::string const&) (__functor=..., __args#0=0x905a80, __args#1=..., __args#2=..., __args#3=...) at /usr/include/c++/4.4/tr1_impl/functional:1654
  #8  0x00007ffff6d3840f in std::tr1::function<Sirikata::TimeSteppedQueryableSimulation* ()(Sirikata::Context*, std::tr1::shared_ptr<Sirikata::VWObject>, Sirikata::SpaceObjectReference const&, std::string const&)>::operator()(Sirikata::Context*, std::tr1::shared_ptr<Sirikata::VWObject>, Sirikata::SpaceObjectReference const&, std::string const&) const (
      this=0xc4ad28, __args#0=0x905a80, __args#1=..., __args#2=..., __args#3=...) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #9  0x00007ffff6d25f52 in Sirikata::HostedObject::addSimListeners (this=0x8b5180, pd=..., simName=..., sim=@0x7fffffffb0f0) at /home/ewencp/sirikata.sirikata/liboh/src/HostedObject.cpp:372
  #10 0x00007ffff6d213e8 in Sirikata::HostedObject::runSimulation (this=0x8b5180, sporef=..., simName=...) at /home/ewencp/sirikata.sirikata/liboh/src/HostedObject.cpp:111
  #11 0x00007fffde5f8ebe in Sirikata::JS::JSObjectScript::runSimulation (this=0x1319a00, sporef=..., simname=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectScript.cpp:587
  #12 0x00007fffde64349f in Sirikata::JS::JSPresenceStruct::runSimulation (this=0xef1c60, simname=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectStructs/JSPresenceStruct.cpp:245
  #13 0x00007fffde65c755 in Sirikata::JS::JSPresence::runSimulation (args=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjects/JSPresence.cpp:199


  I think there are 2 possible fixes. First, we could destroy all simulators on reset, in which case we'd only need to make sure Ogre cleans up properly before we finish the reset. Second, we could make the list of simulators accessible to the script in a way that we could scan through them to find an existing copy and "reconstitute" the graphics object instead of allocating a new one.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Standalone Ogre renderer
description:
  It'll be very useful to have a standalone Ogre renderer that uses the same basic code as the normal client, i.e. the code from OgreSystem. However, since some of that code is dependent on the rest of the object host being available, uses ProxyObjects, etc, that code needs to be factored into the renderer-only code and normal client code. Then, a simple binary which loads a single model for rendering should be easy.


type: defect
component: Berkelium
priority: major
owner: nobody
reporter: intoinside
status: new
summary: Print feature problem
description:
  When i try to print a page (for example from window.print()) berkelium opens correctly the print dialog but when i choose "Print", the dialog window is closed and nothing is written in the printer queue and nothing is printed.

  Tried on Windows Vista 32bit SP1 and WinXp 32bit SP3.
  Tried with print all pages, print selection, print only some page, print on other printer etc... nothing happens.
  Same result also on glut_input example.

  Bye


type: enhancement
component: Sirikata
priority: minor
owner: nobody
reporter: ewencp
status: closed
resolution: fixed
summary: Simplify interacting with GUIs from Emerson
description:
  Emerson's GUI class, std.graphics.GUI, should provide additional wrappers for eval so that simple method calls and assignments are possible:

  gui.call('methodName', arg1, arg2, arg3);

  gui.set('varname', value);

  These should take care of things like escaping strings so that operating on GUIs is simple and less error-prone.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Ogre picking is using bounding boxes instead of meshes
description:
  The code is supposed to handle per-triangle intersections, but it seems to be using bounding boxes instead. There was a change in that code awhile ago during some other bug fixes that may have broken per-triangle picking, perhaps by making the per-triangle part always pass.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Click and drag on a WebView allows selection, resulting in weird, selected window title bars
description:
  I'm not sure there's a good global fix for this, but at least for elements we know the classes of and expect to show up a lot (e.g. whatever dialog/window class we standardize on, currently $.dialog()) I believe we can turn off text selection with CSS.


type: defect
component: CDN Server
priority: major
owner: jterrace
reporter: ewencp
status: closed
resolution: fixed
summary: Individual file components in CDN's /api/browse
description:
  In /api/browse, you don't currently get all the parts of an objects name as individual components. For example, for

  meerkat:///palmfreak/basketball.dae/optimized/0/basketball.dae

  we should get username = 'palmfreak', path = '' (I think you can have a longer path in there), name = 'basketball.dae', version_num = '0'.  The specific names aren't important, but currently, at least basketball.dae needs to be extracted manually.


type: enhancement
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Expose a logging mechanism, with log levels, to WebViews
description:
  Its really hard right now to debug WebViews, and just using onConsoleMessage with moduleloglevel=webview=detailed is pretty painful since a bunch of other stuff gets printed as well. Instead, it would be ideal to have a parallel logging mechanism that behaves similarly but doesn't conflict with other system level logging.


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: ewencp
status: closed
resolution: fixed
summary: CDN merges primitives in same mesh but with different materials
description:
  For this model, http://open3dhub.com/view/echeslack/SportsMaleAvatarIdle.dae/0 , the CDN is generating an optimized mesh which seems to drop one of the materials. It goes from having these three triangles tags:

   <triangles count="192" material="Sports-Bandana">
   <triangles count="2946" material="_9_-_Default_1">
   <triangles count="108" material="Black">

  to only having these:

   <triangles count="192" material="Sports-Bandana">
   <triangles count="3054" material="_9_-_Default_1">

  The second two seem to be getting merged, probably because they are in the same mesh tag, but they don't have the same material so they aren't actually candidates for merging.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: bmistree
milestone: v0.0.5
status: closed
resolution: fixed
summary: Pinto proximity removal messages don't arrive
description:
  If an avatar sets its own query angle to a high value (eg. 1000), only a subset of the objects that should disappear do.  If you move closer to the other ones that should have, they disappear.  Tagging all the incoming proximity removal messages in hostedobject, suggests that you don't get proximity removal messages for the other objects until you move closer to them.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: OgreRenderer crashes if reduce-draw-calls can't be loaded
description:
  OgreRenderer crashes if it can't allocate the reduce-draw-calls filter due to this:

  throw "No filter named " + name;

  Instead, it should catch the exception and fall back to using no filter, just loading the mesh.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: Trying to serialize/deserialize a visible fails
description:
  Something seems wrong with the way visibles are getting serialized/deserialized. This simple test script tries to pass the visible through the createEntityScript call so the new entity has a visible for the parent:

  function connectedHandler(msg,sender) {
      system.print("I got a connection message from a child entity.");
  }
  connectedHandler <- [{'connected'::}];


  function newEntInit(masterAddr)
  {
    //imports basic library
    system.import('std/default.em');
    //creates a presence to send message to out of master's address
    var masterVis = masterAddr.masterAddr;

    system.onPresenceConnected(
     function() {
       //creating and sending mesage
       var msg = { 'connected' : true };
       msg -> masterVis;
     }
    );
  }


  var masterAddr = { 'masterAddr' : system.self.toVisible() };
  system.createEntityScript(system.self.position, newEntInit, masterAddr, 0.000001);


  This results in an exception that looks like the deserialize call doesn't have the string in quotes:

  [JS] ERROR: [JS] Uncaught exception SyntaxError: Unexpected token ILLEGAL
  when trying to run script: (function newEntInit( masterAddr  )
  {
  system.import( 'std/default.em' );
  var masterVis = masterAddr.masterAddr;
  system.onPresenceConnected( function (   )
  {
  var msg = { 'connected' : true };
  system.sendMessage(system.self,msg,masterVis );

  } );

  }) ( system.deserialize(�

  masterAddr��
  typeId	
  visible\
  vis_space_refK
  If45858b0-9d36-4810-ae59-ac7d431f227e:12345678-1111-1111-1111-defa01759ace_
  vis_to_space_refK
  If45858b0-9d36-4810-ae59-ac7d431f227e:12345678-1111-1111-1111-defa01759ace
  	prototype@));


type: enhancement
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: Presences should automatically be serialized as visibles
description:
  When passing messages to other entities, presences should automatically be converted to visibles for serialization, i.e. I should be able to say

  var msg = { 'myself' : system.self }

  rather than having to say

  var msg = { 'myself' : system.self.toVisible() }


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: Alt-tab in windows gets tab modifier stuck down
description:
  The tab modifier gets stuck down when you alt-tab away and back, resulting in most keys and actions not work since they don't use alt.

  One solution might be tracking the window focus/unfocus so we can clear modifiers on refocus.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Headless Emerson
description:
  We should be able to run pretty substantial Emerson programs headless -- things like math functions, print, and timers should all work, but anything involving presences and visibles do not have to work.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
cc: bmistree
status: closed
resolution: wontfix
summary: Setting individual values on presence settings, e.g. position, doesn't work
description:
  The returned value of the accessor is a copy, so doing

  system.self.position.y = 7

  doesn't actually set the position's y coordinate.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Crash in Ogre mPrimaryCamera == NULL
description:
  This seems to happen sometimes at random, sometimes at startup. May be related to the pinto results getting retransmitted and causing resets.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.5
status: closed
resolution: fixed
summary: Make WebView exceptions, which get reported as console message, print out at higher error level
description:
  Currently they default to the same as all other messages, but they are usually more critical. Detect these exception messages and have them report at error level by default.


type: defect
component: Ogre Graphics Plugin
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Specular maps
description:
  Specular shading is turned on, but it only works with color materials, not with texture materials. Add support for specular textures.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Normal/bump maps
description:
  I think we're ignoring bump/normal maps both in the collada loader and definitely in the Ogre renderer. Add support in both components, which likely means modifying the Meshdata struct to also carry this information.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Bullet plugin support on windows and mac
description:
  The bullet location manager plugin is not building on Windows or Mac. The mac dependencies definitely had bullet removed awhile ago since it was a prebuilt binary that was no longer compatible, but I'm not sure what happened to the Windows one.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Dragging object when inside its bounds behaves weirdly
description:
  Seems to have something to do with the the center of the object being behind the camera, resulting in it moving in the opposite of the expected direction. Handling this properly probably requires getting back the picked position on the object and using that for computing movement.


type: enhancement
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Provide very simple default mesh for when a mesh won't load
description:
  It should be something very simple like a texture-less, white cube. This should enable you to load items even when the CDN completely fails, i.e. you have no internet connectivity but are working against a local space server.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Physics updates sometimes only triggered if other updates are going through
description:
  Sometimes physics updates are only making it to an object if other changes trigger it. For example, loading up the default scene right now sometimes leaves the avatar thinking the ground object has no physics properties when it actually has them filled in. But then moving the object triggers an update and the new physics settings get through.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Mesh transparency/rendering issue
keywords: model
description:
  http://open3dhub.com/view/wmonroe4/trex.dae/0 renders incorrectly, looking sort of inside-out/hollow in parts. Looks very similar to #219.


type: defect
component: Object Host (Client)
priority: minor
owner: nobody
reporter: jterrace
status: new
summary: Cursor doesn't change in webviews
description:
  When an html page loaded via a WebView requests to change the cursor, we aren't changing it properly.

  The current jquery dialog we are using for the UI has nice support for changing the cursor at the title bar (to drag), for buttons (to pointer), and at the corner (to resize). These aren't being changed within cppoh.


type: enhancement
component: Object Host (Client)
priority: minor
owner: nobody
reporter: jterrace
status: new
summary: WebViews are laggy
description:
  Not sure of the cause, but interactive webviews feel sluggish within cppoh when compared to loading them in a browser. Maybe triple buffering?

  Would be nice to get this rendering more quickly.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.7
status: closed
resolution: fixed
summary: Notify avatar when the connection is lost
description:
  The Ogre plugin should be able to tell the user when their connection to the space is severed. Ideally it would automatically reconnect, but just notifying the user is good enough for now.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Bullet physics shouldn't block on loading meshes
description:
  Right now the main thread blocks until a mesh is downloaded, and if it fails the main thread is blocked indefinitely.  Instead, it should load asynchronously and then turn on physics when it has all the necessary information.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.6
status: closed
resolution: fixed
summary: Bullet physics needs to handle failed mesh downloads
description:
  It seems like it currently just blocks the entire addition process. Best option might be to degrade to either, but no matter what the solution, all possible failures need to end up returning information to the main thread.


type: defect
component: Bullet Physics Plugin
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Bullet physics doesn't handle movement of dynamic objects well
description:
  There's not necessarily a good way to address this because bullet doesn't let you move dynamic objects. Some options are:

  1. When an update request is made, disable physics permanently. This is probably bad though since then there's no good way to do, e.g., avatar walking.
  2. When an update request is made, disable physics, move the object, and reenable physics. This is potentially problematic since it can result in objects shooting off very fast (e.g. if you move the object to collide with other objects such as the ground, it will shoot up into the air).
  3. When an update request is made, add a constraint (point to point or 6dof). This is how picking is handled in the bullet demos. The drawback is that objects may not move to their new location and in some cases it might be difficult to understand why the object is behaving as it is. Also, how long do you maintain the constraint for?


type: defect
component: Bullet Physics Plugin
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.7
status: closed
resolution: fixed
summary: Bullet physics isn't clearing out previous rigid body when changing modes
description:
  If you set a model from 'static' to 'dynamic', the object shoots off into the distance because the rigid body still exists in the bullet simulation. The simulation should be carefully cleaned out before updating an object's properties.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.7
status: closed
resolution: fixed
summary: Bullet should clamp the maximum velocity / rotational velocity generated
description:
  Currently its pretty easy to make things shoot off very quickly because of interpenetration, especially when first turning physics on for an object. Bullet should clamp the maximum resulting velocities / rotational velocities so this effect is within reasonable bounds.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Bullet should support non-bvh mesh-based collisions
description:
  Since the BVHTriangleMeshShape can be arbitrary triangles, it can only be used properly for static objects (i.e. the ground and another bvh object won't collide and interact). Instead, dynamic mesh-based collision (as opposed to bounding box or sphere) should use some other collision shape.

  This page http://bulletphysics.org/mediawiki-1.5.8/index.php/Collision_Shapes provides a good overview. One pretty good options seems to be btConvexHull combined with the btShapeHull reduction utility to get it to a reasonable (and space-server-controlled) # of vertices, but we'll probably need some experimentation to see what can work well for arbitrary meshes.
   


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Add listing of crashes to crashcollector
description:
  Right now you have to figure out for yourself what number you're up to and work through the status URLs manually. There should be a listing page so we can at least get the most recent ones, with date information.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: closed
resolution: fixed
summary: Add version info to crashcollector reports
description:
  Crashcollector should collect and store the version information provided within the binaries so we can track bugs to particular compiled version numbers, e.g. each status should have a vx.y.z + git commit hash #.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: Out of process minidump generation
description:
  Minidumps from breakpad are generated from within the crashed process. Breakpad has support for out of process (OOP) minidump generation. See, e.g., the section in http://code.google.com/p/google-breakpad/wiki/WindowsClientIntegration by that name.  This would more reliably complete minidumps and won't accidentally corrupt the minidumps.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Resource prevention: track imports
description:
  Forgot that you can have an infinite cycle of imports.  When call import, increment resource counter, and throw exception if exceed max val.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
milestone: v0.0.9
status: closed
resolution: fixed
summary: Reset bug: when call reset, should playback the solid angle results for each presence
description:
  Currently, if you call reset, each presence doesn't get its pinto result set played back.  I don't think that we can just set the solid angle query very small and then reset it very large; will have to persist result set across reset and playback.

   


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: new
summary: Prevent user from over-writing yield-ish call that prevents infinite loop
description:
  Right now, have a special function that calls into the system to check number of cycles have computed to try to prevent infinite loops.  Currently, the user can overwrite this function.  In compiler, special-case this function to prevent its over-writing.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
milestone: v0.0.12
status: closed
resolution: fixed
summary: Re-enable messaging between sandboxes
description:
  We cut out messaging between sandboxes a while ago.  Re-enable it.  (Should just involve enabling sandboxes's being passed in to regular messaging and handler functions instead of just presences and visibles.)


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Physics UI sometimes fails after closing it
description:
  The error is as follows and so far has only been seen on win32:

  "TypeError: Cannot call method 'call' of undefined
  this._ui.call< 'PhysicsSettings.toggleVisible' >;

  TypeError: Cannot call method 'call' of undefined
  at [object Object].toggle <std/graphics/physics.em:15:10>
  at Object.togglePhysicsProperties <std/core/bind.em:23:13>
  at [object Object].dispatch <std/graphics/inputbinding.em:190:46>
  at [object Object].onAnything <std/core/bind.em:23:13>
  at [object Object]_handle <std/graphics/input.em:37:7>
  at std/core/bind.em:23:13"

  The message gets printed when I just select other cubes, and ctrl-p has no effect. I'm running space with the flag you put in the last email (forgot what it was). I opened the window when after selecting one cube and closed it. 


type: defect
component: JavaScript/Emerson Plugin
priority: major
owner: bmistree
reporter: zhihongx
status: closed
resolution: fixed
summary: subtraction of 64-bit numbers always returning 0
keywords: 64-bit number subtraction error
description:
  I was trying to subtract two time values, but I always got zero as the answer. So then I wrote this simple code:

    system.print(100000000000 - 99999998000);

  It also always printed 0. I'm suspecting that the implementation of the subtraction does not use 64-bit representation. 


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Misparsed init-script causes following JSObjectScript to fail
keywords: crash
description:
  I messed up the argument to --init-script by leaving spaces in it:

  --init-script=(function ( ) { system.import('std/defaultAvatar.em'); })();

  the script passed in is just '(function', which is clearly invalid. It looks like the compile error or something else in the process of initialization reports no error and screws up future scripts. The following is the stack trace, but note that this is actually from the *next* JSObjectScript that is instantiated:

  #0  0x00007fffde0ca40c in v8::Context::Enter() () from libscripting-js_d.so
  #1  0x00007fffddf7da73 in Scope (this=0x7fffffffca70, context=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-v8/include/v8.h:3295
  #2  0x00007fffddfc7d22 in Sirikata::JS::JSContextStruct::createContextObjects (this=0x8c4600) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectStructs/JSContextStruct.cpp:146
  #3  0x00007fffddfc722f in JSContextStruct (this=0x8c4600, parent=0x909b80, whichPresence=0x0, home=0x7fffffffd110, sendEveryone=true, recvEveryone=true, proxQueries=true, canImport=true, canCreatePres=true, canCreateEnt=true, canEval=true, contGlobTempl=..., contID=0) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectStructs/JSContextStruct.cpp:41
  #4  0x00007fffddf6ebac in Sirikata::JS::JSObjectScript::initialize (this=0x909b80, args="--init-script=system.import('std/default.em');") at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectScript.cpp:238
  #5  0x00007fffddf89542 in EmersonScript (this=0x909b80, ho=std::tr1::shared_ptr (count -300261032) 0x7fffffffd480, args="--init-script=system.import('std/default.em');", jMan=0x8b3d00) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/EmersonScript.cpp:90
  #6  0x00007fffddf680c3 in Sirikata::JS::JSObjectScriptManager::createObjectScript (this=0x8b3d00, ho=std::tr1::shared_ptr (count 4) 0x915600, args="--init-script=system.import('std/default.em');") at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjectScriptManager.cpp:471
  #7  0x00007ffff6d5e80d in Sirikata::HostedObject::initializeScript (this=0x915600, script="js", args="--init-script=system.import('std/default.em');") at /home/ewencp/sirikata.sirikata/liboh/src/HostedObject.cpp:301
  #8  0x00007ffff6d46e7a in Sirikata::ObjectHost::createObject (this=0x8c6000, uuid=..., script_type=0x0, script_opts=0x0) at /home/ewencp/sirikata.sirikata/liboh/src/ObjectHost.cpp:114
  #9  0x00007ffff6d46d95 in Sirikata::ObjectHost::createObject (this=0x8c6000, script_type=0x0, script_opts=0x0) at /home/ewencp/sirikata.sirikata/liboh/src/ObjectHost.cpp:106
  #10 0x00007fffdf30cca3 in Sirikata::CSVObjectFactory::generate (this=0xc5acf0) at /home/ewencp/sirikata.sirikata/liboh/plugins/csvfactory/CSVObjectFactory.cpp:304
  #11 0x000000000040cc52 in main (argc=1, argv=0x7fffffffe338) at /home/ewencp/sirikata.sirikata/cppoh/src/main.cpp:169


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Initial script should be standard argument for all ObjectScripts rather than
description:
  Originally we had init-script just specifying a filename, which worked well through the options system. It has since expanded to just using any script and has become difficult to properly escape/parse the arguments to extract the script.

  Instead, we should add another parameter for the ObjectScriptManager which is the script to run. This will also require changing ObjectHost/HostedObject as well as the object factories and example scenes.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.7
status: closed
resolution: fixed
summary: Entity might be destroyed but still receive AssetDownloadTask callback
description:
  This can actually happen for 2 reasons:

  1. It doesn't look like mAssetDownload is being cancelled if the Entity is destroyed. Regardless of crashes, this should happen for efficiency reasons.
  2. The callback could be invoked with the raw Entity* even after everything has been cleaned up because it has to cross threads -- the AssetDownload may fire the callback, which then posts across strands, the Entity get's destroyed, and *then* the actual callback gets invoked.

  Looks like this could be the cause of quite a few recent crashes, e.g. http://crashes.sirikata.com/status/162 and http://crashes.sirikata.com/status/167.

  Either Entity needs to be turned into a shared_ptr or some other check needs to happen *at the time of the final callback in the same thread as Entity destruction* to ensure the Entity is still valid.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Make crashcollector cache computed backtrace information
description:
  Computing backtrace information is relatively expensive. Crashcollector should cache that data and have a button to recompute it (e.g. if debug symbols were missing and have since been added).  This will also allow old debug symbols to be removed over time but still maintain the backtrace information.


type: enhancement
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Add shadow support for Ogre
description:
  Shadows make it a lot easier to understand how things are laid out, whether things are actually floating above the ground, etc.

  This seems not to be as simple as just setting the Ogre shadow technique, despite what some Ogre documentation seems to claim.  Fixing this may also require changes to the default lighting setup.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: closed
resolution: fixed
summary: Add libcassandra depdendency
description:
  Looks like its an autotools build, so may only be relevant for Linux & OS X.  Should have both the build in the dependencies repositories and the CMake script to find them.


type: task
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Add OH::Storage tests
description:
  Add some basic tests for the OH::Storage interface, making sure they can be run with different implementations.


type: defect
component: Object Host (Client)
priority: major
owner: bmistree
reporter: zhihongx
status: closed
resolution: fixed
summary: scripts get executed twice on import
keywords: import script executed twice
description:
  I've been getting double execution of imported scripts ever since I upgraded to v0.0.7 - all imported scripts get executed twice. I'm running v0.0.7-bd2d7e on Ubuntu 11.04


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Make ui.call support passing arguments besides strings
description:
  Right now its restricted to strings, it shoudl at least support ints, doubles, arrays, and should probably auto-convert presences and visibles to sringified IDs.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: ewencp
status: new
summary: Emerson file import can block the main thread
description:
  We probably don't want to make import async, but if files are slow to load (large or e.g. over the network), then this can block the main thread. Alternatives to breaking the stack at the import is to force async imports on the user (require callbacks) or make the object scripts run in a separate thread pool.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: danielrh
status: new
summary: DeadlineTimer::cancel ineffective in craq_[gs]ets/asyncConnection[GS]et.cpp
description:
   AsyncConnectionGet::~AsyncConnectionGet()
  seems to depend on DeadlineTimer::cancel not calling back.

  but DeadlineTimer often can still allow events through even after cancellation

  clear_all_deadline_timers may depend on similar behavior

  This should be replaced with IOTimer, or if craq is deprecated, this bug should be closed and the corresponding code removed


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: new
summary: Unique strings for GUIs are error-prone
description:
  In GUIs, you need to provide the same string both in Emerson and in the GUI script itself (js file). This is very error prone -- people tend to accidentally use different names, often just because the capitalization is different. We could probably auto-wrap the components in sirikata.ui calls that we generate with the correct names...


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: Updated proximity set results in flickering objects.
description:
  There should be some code to mask these but either it isn't functioning or doesn't have a sufficiently high timeout. The result is objects flipping on and off as more objects are added to the scene.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: More flexible Invokable/Emerson camera control
description:
  We need Emerson to be able to have more control over the camera, which means changing the Invokable interface for it. The most basic solution is to allow it to switch which object it follows so it can at least track other objects (e.g. an avatar which a game creates but which the owner is controlling). Probably a better solution is to delegate more control the avatar, but this requires giving up the performance of most frame updates remaining in C++ code only.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Berkelium renderer process crashes and hangs the UI
description:
  This seems to be especially common on mac, and relatively common on win32 (at least I've noticed it on one laptop fairly regularly). At a minimum we need to catch this and notify the user, but we really need this to be more reliable -- perhaps catching crash in the renderer process and reporting it like we do with crashes in Sirikata binaries.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Make crashreporter prompt user if they want to report the error
description:
  They should have the option to opt out, especially so we don't get a ton of the same crash report over and over again when its just the same person doing the same thing.


type: defect
component: Object Host (Client)
priority: minor
owner: nobody
reporter: jterrace
status: new
summary: DiskCacheLayer loses information across runs
description:
  The DiskCacheLayer interface only keeps track of files in memory. If you set the maximum size to some value, it only caps at that size for a single run, so the cache directory will grow unbounded across multiple runs of the cppoh. It should be redesigned to keep track of cache files and the LRU information, either in some file or in a sqlite database.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Add support to Emerson graphics.GUI for passing variable names
description:
  Currently its impossible to use the convenience methods (gui.call, gui.set) to manipulate values of variables because you'd have to specify them as strings, but those are treated as literals. We need some sort of wrapper to indicate that the variable name rather than string literal should be used, e.g.

  gui.call('sirikata.log', 'fatal', 'Invalid value: ', GUI.var('myvarname'));


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
summary: sirikata.log in the Ogre GUI code doesn't print non-strings
description:
  It seems to be failing to convert non-string arguments properly, which just makes them look blank. This is known to be broken at least for numbers, but possibly for others as well.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: invalid
summary: Crash on invalid Emerson passed to GUI.eval
description:
  This snippet is reported to cause a crash:

  this._gui.eval( "setMenuItems([{ text: "item1", enabled: 1}, { text: "item2", enabled: 1}]);" );

  is reported to cause. Clearly there's missing escape characters for the strings, but it shouldn't be able to crash anything.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: It looks like createVisible *may* reverse what's being watched and what's watching it.
description:
  Check the line system.createVisible(simulator._selected.toString()) to see why we're getting OH warnings.
   -Behram


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Own movement in space on remote host is jerky
description:
  Probably due to latency and not resolving predictive updates made locally with location updates received from the space server -- this makes sense since movement seems to be smooth for other objects.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
status: closed
resolution: fixed
summary: Provide way to re-invoke prox callbacks for a presence
description:
  Some initialization requires you to wait for multiple async callbacks (common example is GUIs), so the prox callbacks automatically generated for existing visibles won't always work. Instead, we should be able to get at the current set/force reinvokation of callbacks.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Make it so that can register additional functions for onProxAdded and onProxRemoved
description:
  Currently, when set onProxAdded or onProxRemoved, it overwrites the function that was already there.  


type: defect
component: Sirikata
priority: minor
owner: ewencp
reporter: ewencp
status: new
summary: Incorrect model rendering
keywords: asset render
description:
  http://open3dhub.com/view/elliotconte/models/Untitled.dae/0

  Seems like stripes are incorrect, and the black is applied to the legs instead of as stripes.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Fix messages in Emerson to be over reliable channel
description:
  Right now they are just ODP and on a loaded server get dropped a lot.  Needs to be over SST streams.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Scripting window sometimes gets additional script entry boxes
description:
  This seems to be some sort of error on cleanup, and something to do with not all elements actually getting removed for each scripting tab, since the script entries also seem to get an increasing amount of whitespace as scripting windows are closed. It also seems to be order dependent, i.e. if you close an older tab, space gets created, if you close a newer tab, older tabs don't get the extra space.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.8
status: closed
resolution: fixed
description: This is needed so UIs can be shipped to other users.
summary:
  Provide overload / similar function for addGUIModule using a plain string of JS instead of a separate file


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Add y-axis only physics option
description:
  Add a physics 'treatment' which turns off any rotations and only enables vertical movement. This can be used for placing things on the ground, even if it is uneven, without toppling them (e.g. buildings).


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: ewencp
status: closed
resolution: fixed
summary: Make CDN run under monit or similar to ensure memory usage stays under control
description:
  It seems like we sometimes we get a runaway process that starts swapping like crazy. Process monitoring software like monit allows you to enforce rules for this, e.g. we could kill it or at least alert someone that a CDN node is going into a bad state.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Incorrect model rendering
keywords: asset render
description:
  http://open3dhub.com/view/kittyvision/tree/detailedpine.dae/0

  Unlike on the CDN, the materials seem fine, but it looks like a bunch of the leaves are missing.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Incorrect model rendering
keywords: asset render
description:
  http://open3dhub.com/view/kittyvision/tree/youngtree.dae/0

  Looks like some kind of transformation problem. There are a bunch of leaves at the base when they should be concentrated higher up.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: closed
resolution: invalid
summary:
  Check to ensure that meshes downloaded from the cdn appear in-world with the same orientation they're displayed on the cdn on.

description:
  Check to ensure that meshes downloaded from the cdn appear in-world with the same orientation they're displayed on the cdn on.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
status: new
summary: Clicking links in the GUI replaces the entire GUI
description:
  We need to use the callbacks received by Berkelium to cancel loading of the new page and do something else with it, perhaps open it in an iframe or separate webview.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Expose a basic mesh/scene interface to Emerson, without Ogre
description:
  The most basic request, especially for building simple worlds, is for raytracing. For example, this is useful for determining where the ground is for placing objects and where walls are for placing billboards.

  The interface could become more complicated, but just having the system be able to load meshes and perform raytracing for you seems like a good start.  Doing this per-presence, rather than on the whole scene, might be a good way to keep the cost down.


type: defect
component: Sirikata
priority: major
owner: danielrh
reporter: danielrh
milestone: v0.0.12
status: closed
resolution: invalid
summary: cppoh is sending protobuf messages with invalid unicode in string variables
description:
  It's highly likely that some byte arrays are marked as 'string' in protobuf. This is causing strange errors in javascript when parsing the protobuf messages on sirikata port 12.

  I will investigate further


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
cc: bmistree ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Get system.presences[0] out of tutorials
keywords: docs
description:
  There's no real reason for them to be using system.presences[0] since we have system.self and system.self is the preferable approach.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Expose ray tracing of object meshes to Emerson
description:
  See #307 for what should be the start of this implementation. This issue focuses on adding the raytracing support after basic loading is available.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: new
summary: Potential bug with pasting eol chars from windows into scripting dialog
description:
  Elliot's getting an unexpected illegal token error when he copies and pastes from a file that he's editing on windows into the scripting dialog.  Check to make sure that scripting dialog allows windows eol chars.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Bullet physics isn't computing bounding box for some models correctly
description:
  Even though some defaults, like the cube, work fine, others don't. For example, dropping this mesh http://open3dhub.com/view/kittyvision/tree/areca.dae/0 allows it to penetrate the ground mesh.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.9
status: closed
resolution: fixed
summary: Allow GUIs to pop up new 'tabs'
description:
  We need to support loading a separate 'tab' (really window, but that's confusing since the js code we inject supports 'windows' via jquery). This is necessary in some cases because we can't always use iframes, e.g. because of frame-busting code.  In particular, Facebook logins require this.

  For this to be useful in that respect, we also need to make sure that certain events can be grabbed from child windows (or just windows in general, via Invokable). For example, in the Facebook example, we need to know when page loads happen and their URLs, as well as the ability to close the 'tab'.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
milestone: v0.0.12
status: new
summary: Allow serializing (text) of function prototypes.
description:
  Currently, if you try to serialize a function, you'll only get its text, and not its prototype's text.  Fix this.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: new
summary: Allow dangling commas in compiler
description:
  It's caused kids a lot of headaches that 

  var a = [1,2,3,];

  throws a syntax error.  Just allow dangling commas.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Incorrect model rendering - stretched triangles across model
keywords: asset render
description:
  meerkat:///gabrielle/models/urbanpaintball.dae/optimized/0/urbanpaintball.dae

  Looks like some triangles are getting misrendered, maybe referring to incorrect indices/vertex data.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: Add filter for crashreporter allowing us to filter by revisions we know we have symbols for
description:
  Because the crash reporter points at the crashes site by default, we get reports from windows even if its not an official build we have symbols for. Collecting these isn't a problem, although #287 should also reduce how many of these we get, but its helpful to be able to filter them since we won't get good data for them anyway.  Alternatively, just be able to delete/mark invalid items so they no longer show up.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Make Ogre picking account for transparency
description:
  If you have, e.g., large quads with textures on them for snow or rain, the transparent parts are taken into account during picking, making it hard to select anything else. The ogre picking/raytracing code needs to take into account transparency.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: createEntityScript does not parse single string argument correctly when creating.
description:
  Just run:

  system.createEntity(<0,0,0>, 'system.import("something.em");', null,1);

  And you'll see.  Also, it'll throw 20 instead of reporting a sensible error.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Add in overloading of ==, /,*, etc. for vectors
description:
  Vecs and quaternions now have these operators (and !=, ===, !==) overloaded.  If notice that things are getting slow, may eventually want to call into javascript to prevent overhead of calling back to cpp.  Can either do this in the compiler or by allowing us to execute js lines.


  Resolved by commit #7384ba00.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: Missing db file in CSVObjectFactory causes crash
description:
  Known to happen on at least windows and mac. This crash was due to it: http://crashes.sirikata.com/status/332 and we've seen the same problem when downloading the db on Mac saves it to avatar.db.db.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.11
status: closed
resolution: fixed
summary: Add billboard support in mesh loaders + ogre
description:
  We need to work out the exact way this should be specified in URLs if we're going to encode it all without requiring real interaction with the , but it should be possible to just specify an http URL to use as a texture for a billboard and encode that its a billboard only in the URL, perhaps just using data urls.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: Add model orientation setting for presences
description:
  Some models pop up with the wrong orientation because they weren't setup for Sirikata. The core presence scripts and wrappers should handle a model orientation -- it is entirely local to the object, but puts the model in the right orientation so that movement is always natural.

  Ideally this could be fixed/seeded by the CDN, but worst case we can set it manually for now.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.11
status: closed
resolution: invalid
summary: Add Ogre 'transport' call to force an immediate shift to a new location
description:
  If you move very quickly to a different location, you get the camera moving smoothly, but usually if you transport very far you want to move the camera immediately, along with your entity.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: Scrolling in Berkelium windows is broken
description:
  Things get all corrupted, and it actually looks like we might be ignoring scroll updates altogether.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: WebView::bind should use Berkelium Variants instead of strings
description:
  There's not much reason to hide this implementation detail and it gives a lot more flexibility, e.g. being able to know the type being passed in and extract function names for callbacks.


type: defect
component: Sirikata
priority: major
owner: tazim
reporter: ewencp
status: closed
resolution: fixed
summary: Can't tell how much data was written to SST substream when passed in to create
description:
  If you do something like:

  streamPtr->createChildStream(cb, data, data_len, port, port);

  it looks like SST will only buffer to its maximum buffer size (since it stores first the MAX_DATAGRAM_SIZE then uses the normal write() call). However, there's no way to tell how much it has buffered, as there is when you use write (bytes_written is returned from write).

  One solution would be to make that the return value since its currently returning void.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary: Rotation controls result in incorrect rotation when enabled and disabled interleaved
description:
  If you try to combine rotate up and rotate right, you get into a bad state when you press and release in the following combination:

  start rotate right
  start rotate up
  end rotate right
  end rotate up

  This is because the current rotation code in rotateAndMove and controls in graphics/default.em just apply the deltas in sequence, but since rotations aren't commutative, the resulting rotation is not the identity as it is when you do


  start rotate right
  start rotate up
  end rotate up
  end rotate right

  One solution might be to track the full list of active rotations in rotateAndMove and have the key up events in graphics/default.em cancel them rather than apply the opposite rotation.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: new
summary: New proximity query registration breaks sandbox abstraction
description:
  The mechanism I changed proximity queries to use (notify system of proximity events) so that we could keep track of a presence's full prox result set doesn't allow children sandboxes to receive prox notifications.  Must also notify individual sandboxes on results.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: In some instances, it appears that we clean up jsposition listener classes too early.
description:
  Attached trace log (from Will) shows a seg fault caused by calling getsporef on a position listener that likely was cleaned up earlier.  It may be that a jscontextstruct is holding onto visiblestruct that was already cleaned up.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: new
summary: Emerson builds twice
description:
  Each emerson file builds twice: once for the scripting plugin; once for emheadless.  A potential solution (as per Ewen) to this would be to sirikata export to a bunch of .hpp files and then link against them while building emheadless.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
milestone: v0.0.12
status: new
summary: Potential incomplete parsing of emerson messages
description:
  There's a potential bug in the way that we determine that we've read a full scripting message.  Right now, we just test if we can decode the scripting message.  If we can, we assume that the full message was received.  This approach could fail if parts of a message can be individually parsed.  Think about adding a length field to the beginning of every message similar to the way that Ewen did in src/HostedObject.cpp:handleProximitySubstreamRead.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: sirikata.event should accept JSON-encodable arguments
description:
  Currently both sides assume only strings go through. Instead, we should do something similar to what we do for sirikata.log, but we need to set it up to convert back on the Emerson side.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: bmistree
milestone: v0.0.11
status: closed
resolution: fixed
summary: Delayed loc updates?
description:
  It appears that occasionally if you change the position or scale of a presence, that change isn't visually reflected until you perform some other operations that write to loc (eg, moving it, setting its scale, etc.).

  Printing the position/scale for the new presence shows the correct values.  

  Three files show an example.  After running testGen a couple of times (attached), you should see some road chunks that are much bigger than they should be.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: It appears that you can't suspend a timer from within its callback
description:
  Reported by aquach.

  system.require('std/core/repeatingTimer.em');
  var timer;
  timer = new std.core.RepeatingTimer(2, function() {
    system.__debugPrint('STEP: YOU SHOULD ONLY SEE THIS ONCE\n');
  timer.suspend();
  });


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.11
status: closed
resolution: fixed
summary: ScriptPlus and ScriptMinus don't work properly for Quaternions, silently converting them to Vec3s
description:
  Because they are hardcoded to detect certain types, the operator overrides don't work for Quaternions and in fact misinterpret them as Vec3s, silently converting them to Vec3s.

  This could be fixed to detect Quaternions, then Vec3s, then numbers and strings, but I think a better fix is to standardize on detecting a __add__ and __sub__ in lhs and always trying to apply to rhs, relying on the method to throw exceptions if necessary. This avoids having to customize the C code every time we add a new type and should work generically -- we can check the types as strictly or loosely as we want in Emerson.


type: defect
component: Sirikata
priority: major
owner: jterrace
reporter: bmistree
status: closed
resolution: fixed
summary: Add an option to httpmanager to support chasing redirects
description:
  Maybe add a flag to makeRequest where a programmer can specify that he/she wants the httpManager to automatically follow redirects.


type: defect
component: Sirikata
priority: minor
owner: nobody
reporter: ewencp
status: new
summary: Changing focus to a WebView should stop movement
description:
  One way to handle this would be to force all actively pressed buttons to trigger key up/mouse up/etc when the focus changes -- in fact this is probably a good idea between webviews as well.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.10
status: closed
resolution: fixed
summary: Restored objects (presences) don't get registered for loc/mesh updates
keywords: bmistree
description:
  This registration occurs in the regular flow in JSVisibleManager::createProxyPtr with the ProxyObjectPtr ptr being non-NULL, but when restoring this isn't the case.  Because of this, updates are never received and storing presences just keeps storing the old version of the data.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
milestone: v0.0.11
status: closed
resolution: fixed
summary: Incorporate google-perftools
description:
  Google's perftools (see http://code.google.com/p/google-perftools/wiki/GooglePerformanceTools) provide an alternative malloc implementation which also allows for heap checking + profiling as well as a library for performing profiling which seems to be an improvement over gprof.

  Integration should be pretty easy as you simply need to link against their libraries -- we should only need a CMake module to detect their availability and a flag to turn them on. Modifying/providing a script for running with the various tools turned on would also be helpful.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
cc: ewencp, bmistree
milestone: v0.0.12
status: new
summary: ObjectScripts are not shutdown properly
description:
  Either the ObjectScriptManager or each ObjectScript should be a Service which can be notified of shutdown so we can clean them up properly. Currently, callbacks are being made (even in to JS) after we request a shutdown of the object host.

  It might make sense for this to occur through the HostedObject, or even originate from the ObjectHost. We probably don't want to actually destroy anything at that point, however, since some callbacks may need to finish up still (e.g. they are outstanding in the IOService and can't be cancelled).


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
cc: ewencp bmistree
milestone: v0.0.11
status: closed
resolution: fixed
summary: JSTimerStructs may not always be cleaned up
description:
  JSTimerStructs can be cleaned up either by the v8 GC or explicitly when they are cleared/destroyed with a Context. If they are cleared first, the v8 GC may still make the other call, but we are not clearing out the External in the v8 object, which could lead to an invalid memory access.

  We need to make sure whenever we actually destroy a JSTimerStruct that the associated fields in any v8 objects are cleared out. (This applies to other types as well, but it is a known problem with JSTimerStructs.


type: defect
component: Sirikata
priority: major
owner: tazim
reporter: ewencp
cc: ewencp
milestone: v0.0.11
status: closed
resolution: fixed
summary: Starting animation after changing mesh causes crash
description:
  1. Set some object's mesh to one animated mesh.
  2. Invoke the following on the avatar to trigger animation display:

  var visibleMap = system.getProxSet(system.self);
  for (var key in visibleMap) {
    animationList = simulator.getAnimationList(visibleMap[key]);
    
    if (animationList.length > 0)
      simulator.startAnimation(visibleMap[key], animationList[0]);
  }

  3. Change mesh to any other animated mesh. No animation should be running.
  4. Invoke part 2 again to start new animation.

  Results in this stacktrace:


  #0  0x00007ffff4af5eec in std::list<Ogre::AnimationState*, Ogre::STLAllocator<Ogre::AnimationState*, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > >::remove (this=0xcd1100, __value=@0x7fffffff9378) at /usr/include/c++/4.4/bits/list.tcc:196
  #1  0x00007ffff4af3f66 in Ogre::AnimationStateSet::_notifyAnimationStateEnabled (this=0xcd10c0, target=0x10423c0, enabled=false) at /home/ewencp/sirikata.sirikata/dependencies/ogre_src_v1-7-2/OgreMain/src/OgreAnimationState.cpp:405
  #2  0x00007ffff5218b6e in Sirikata::Graphics::Entity::setAnimation (this=0x16ded80, name="defaultAnimation") at /home/ewencp/sirikata.sirikata/libogre/src/Entity.cpp:228
  #3  0x00007ffff6994ad8 in Sirikata::Graphics::OgreSystem::startAnimation (this=0xc52900, params=std::vector of length 3, capacity 4 = {...}) at /home/ewencp/sirikata.sirikata/libproxyobject/plugins/ogre/OgreSystem.cpp:720
  #4  0x00007ffff6992d55 in Sirikata::Graphics::OgreSystem::invoke (this=0xc52900, params=std::vector of length 3, capacity 4 = {...}) at /home/ewencp/sirikata.sirikata/libproxyobject/plugins/ogre/OgreSystem.cpp:542
  #5  0x00007fffde195e98 in Sirikata::JS::JSInvokableObject::JSInvokableObjectInt::invoke (this=0x126e630, params=std::vector of length 3, capacity 4 = {...}) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjects/JSInvokableObject.cpp:58
  #6  0x00007fffde1957ed in Sirikata::JS::JSInvokableObject::invoke (args=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/JSObjects/JSInvokableObject.cpp:45
  #7  0x00007fffde293a6e in v8::internal::Builtin_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>, v8::internal::Isolate*) () from libscripting-js_d.so


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: closed
resolution: fixed
summary: Parser exceptions
description:
  From Alex,

  for (var i = 0; i < 2. i++) {
  }

  There's a period after the 2. That makes Emerson crash.


  var test
  if (1 == 2) {
  }


  No semicolon between test and if, which also makes Emerson crash.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: jterrace
milestone: v0.0.12
status: new
summary: system.reset after system.set_script crashes emerson
description:
  1. Bring up alt+s on an object
  2. system.set_script("system.import('std/default.em'); system.import('std/shim.em'); system.import('myScript.em');");
  3. system.reset();

  Produces this:



  {{{
  [JS] ERROR: Uncaught exception:
  std/shim/system.em:842: TypeError: Object [object Object] has no method '__addToPresencesArray'
  system.__addToPresencesArray( presConn );
         ^
  TypeError: Object [object Object] has no method '__addToPresencesArray'
      at Object.<anonymous> (std/shim/system.em:842:8)
      at std/core/bind.em:33:13

  std/shim/system.em:842: TypeError: Object [object Object] has no method '__addToPresencesArray'
  system.__addToPresencesArray( presConn );
         ^
  TypeError: Object [object Object] has no method '__addToPresencesArray'
      at Object.<anonymous> (std/shim/system.em:842:8)
      at std/core/bind.em:33:13
  [OH] ERROR: Uh oh: this object connected twice 12345678-1111-1111-1111-defa01759ace:ff37a05c-1d43-47e0-92b1-58e39fb9e767
  Assertion failed: (it == mObjectInfo.end()), function add, file /Users/sns/ewencp/sirikata.git/liboh/src/SessionManager.cpp, line 76.
  Abort trap
  }}}


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: jterrace
status: closed
resolution: invalid
summary: system.import doesn't work from onPresenceConnected
description:
  test2.em looks like this:
  {{{
  system.print("hello world\n");
  }}}

  and test1.em looks like this:
  {{{
  system.import('test2.em');

  function blah() {
  	system.import('test2.em');
  }

  blah();

  system.onPresenceConnected(blah);
  }}}

  This prints hello world twice, but on the third time, it prints this error:

  {{{
  [JS] ERROR: Uncaught exception:
  std/shim/system.em:719: Error: Couldn't find file for import namedtest2.em
  baseSystem.import.apply( baseSystem, arguments ) ;
                    ^
  Error: Couldn't find file for import namedtest2.em
      at Object.import (std/shim/system.em:719:19)
      at blah (pokekata/test1.em:9:8)
      at Object.<anonymous> (std/shim/system.em:846:2)
      at std/core/bind.em:33:13

  std/shim/system.em:719: Error: Couldn't find file for import namedtest2.em
  baseSystem.import.apply( baseSystem, arguments ) ;
                    ^
  Error: Couldn't find file for import namedtest2.em
      at Object.import (std/shim/system.em:719:19)
      at blah (pokekata/test1.em:9:8)
      at Object.<anonymous> (std/shim/system.em:846:2)
      at std/core/bind.em:33:13

  }}}


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: jterrace
status: closed
resolution: fixed
summary: Same mesh, different textures doesn't work
description:
  If you load two meshes that are identical but referencing different textures, only the first one that was loaded is used.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
milestone: v0.0.12
status: new
summary: Assert error: potentially sending update requests for disconnected presences
description:
  Alex noticed HostedObject.cpp assert cpp:1112: void Sirikata::HostedObject::updateLocUpdateRequest(const Sirikata::SpaceID&, const Sirikata:bjectReference&, const Sirikata::TimedMotionVector3f*, const Sirikata::TimedMotionQuaternion*, const Sirikata::BoundingSphere3f*, const Sirikata::String*, const Sirikata::String*): Assertion `mPresenceData->find(SpaceObjectReference(space, oref)) != mPresenceData->end()'

  After doing the following:
  for (var i = 1; i < system.presences.length; i++)
      system.presences[i].disconnect();

  presences had scripts running on them


  Make sure that we're checking the connection status of presences before sending setting and getting their physical properties (eg. velocity, position, mesh, etc.).


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: new
summary: QueryDistance appears to be broken
description:
  Jeff said that query distance never issued proximate callbacks for him.  Also, it assumes that objects will never leave the world, and doesn't call the removed callback if this happens.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: jterrace
status: closed
resolution: fixed
summary: js plugin segfault on mac
description:
  This commit broke cppoh on mac:
  https://github.com/sirikata/sirikata/commit/f60a00c9320972f53145f6d504e76df5de960eae

  After starting up, it prints this:
  [JS] INFO: Initializing JS Plugin.
  Segmentation fault

  The stacktrace:

  Program received signal EXC_BAD_ACCESS, Could not access memory.
  Reason: KERN_INVALID_ADDRESS at address: 0x65746e6e
  0x1bf12361 in v8::Object::InternalFieldCount () at /Users/jterrace/meru/sirikata/liboh/plugins/js/emerson/Util.cpp:17
  17	}
  (gdb) backtrace
  #0  0x1bf12361 in v8::Object::InternalFieldCount () at /Users/jterrace/meru/sirikata/liboh/plugins/js/emerson/Util.cpp:17
  #1  0x1be3dcc3 in Sirikata::JS::JSTimerStruct::clear (this=0x95d7560) at /Users/jterrace/meru/sirikata/liboh/plugins/js/JSObjectStructs/JSTimerStruct.cpp:320
  #2  0x1bdf3277 in Sirikata::JS::JSTimer::clear (args=@0xbfffe5cc) at /Users/jterrace/meru/sirikata/liboh/plugins/js/JSObjects/JSTimer.cpp:79
  (gdb) 


type: defect
component: Sirikata
priority: major
owner: tazim
reporter: ewencp
status: closed
resolution: fixed
summary: Broken animation
description:
  Starting the first animation on this model: meerkat:///danielrh/femaleWalkIdleSit.dae/optimized/0/femaleWalkIdleSit.dae causes it to become weirdly deformed -- the body is stretched and hands are sideways. Looks like we might be missing a transformation somewhere.


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.12
status: closed
resolution: fixed
summary: Losing persisted objects
description:
  If you start up an object host normally and then restart it, restoring from the database, some of the objects seem to go missing -- it's not a consistent number, but usually 3 or 4.  Must either be getting dropped from the PersistedObjectSet or they aren't getting stored properly on OH::Storage.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: ewencp
milestone: v0.0.12
status: new
summary: Add support for velocity, orientation velocity as well as variants of names in createPresence
description:
  system.createPresence was recently changed to support an object of settings, but its missing some components, like velocity and orientation velocity. Also, we should support full names for options, e.g. 'position' as well as 'pos'.


type: defect
component: Sirikata
priority: minor
owner: bmistree
reporter: bmistree
status: new
summary:
  Re-expose unreliable messaging to emerson, and move unreliable messaging code into EmersonMessagingManager

description:
  Should just involve moving and exposing sendMessageToEntityUnreliable (in EmersonScript.hpp) and handleScriptCommUnreliable (in EmersonScript.hpp)


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
milestone: v0.0.12
status: closed
resolution: fixed
summary: SimpleStorage doesn't handle failure to reconnect presences properly
description:
  Currently it doesn't even check whether the connection was successful. If the load/reconnect fails, this could leave a bad presence and result in the bad object being stored back to the database, leaving the object unloadable (since it won't connect back to the space if it stores a presence marked as disconnected) We should catch connection errors and indicate the error somehow, or at least not trigger the user's script as if everything worked fine.


type: defect
component: Sirikata
priority: major
owner: tazim
reporter: ewencp
status: new
summary: Make sure SST streams timeout and get destroyed
description:
  If there's no activity on a stream, it should eventually time out and the internal shared_ptrs should be removed so it can be destroyed (i.e. mIncomingStreams & mOutgoingStreams).


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: new
summary: Sig abort on headless
description:
  Alex says that the below script is giving the following error:
  # Fatal error in v8::HandleScope::CreateHandle()
  # Cannot create a handle without a HandleScope


  system.require('std/core/pretty.em'); 
  function DP(string) { 
    var args = arguments; 
    if (typeof(string) !== 'string') { 
    result = std.core.pretty(string); 
    } else { 
    var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
    var result = String(string).replace(pattern, function(match, index) { 
    return std.core.pretty(args[index]); 
  });
  } 
  system.__debugPrint(result + "\n"); 
  }


type: defect
component: Sirikata
priority: major
owner: ewencp
reporter: ewencp
cc: bmistree
milestone: v0.0.12
status: closed
resolution: fixed
summary: Crash on migrating object between space servers
description:
  When you move an object across server boundaries it causes this exception, which looks at first glance to be due to trying to allocate a port twice when the onConnected callback is really just for the movement to another space server.

  Program received signal SIGSEGV, Segmentation fault.
  0x00007ffff6ccdd35 in Sirikata::ODP::Port::receive (this=0x0, cb=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/odp/Port.hpp:96
  96	        receiveFrom(Endpoint::any(), cb);
  (gdb) bt
  #0  0x00007ffff6ccdd35 in Sirikata::ODP::Port::receive (this=0x0, cb=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/odp/Port.hpp:96
  #1  0x00007fffdd9a3dcf in Sirikata::BaseDatagramLayer<Sirikata::SpaceObjectReference>::listenOn (this=0x118e700, listeningEndPoint=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:216
  #2  0x00007fffdd99de11 in Sirikata::BaseDatagramLayer<Sirikata::SpaceObjectReference>::listen (listeningEndPoint=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:151
  #3  0x00007fffdd99a42e in Sirikata::Connection<Sirikata::SpaceObjectReference>::listen (cb=..., listeningEndPoint=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:631
  #4  0x00007fffdd9976f6 in Sirikata::Stream<Sirikata::SpaceObjectReference>::listen (cb=..., listeningEndPoint=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:1451
  #5  0x00007fffdd993339 in Sirikata::JS::EmersonMessagingManager::presenceConnected (this=0x9111d8, connPresSporef=...) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/EmersonMessagingManager.cpp:26
  #6  0x00007fffdd9770eb in Sirikata::JS::EmersonScript::onConnected (this=0x911040, from=std::tr1::shared_ptr (count 7) 0x8b7c18, name=..., token=-1) at /home/ewencp/sirikata.sirikata/liboh/plugins/js/EmersonScript.cpp:398
  #7  0x00007ffff6d3f430 in Sirikata::Provider<Sirikata::SessionEventListener*>::notify<void (Sirikata::SessionEventListener::*)(Sirikata::SessionEventProviderPtr, Sirikata::SpaceObjectReference const&, Sirikata::int64), std::tr1::shared_ptr<Sirikata::HostedObject>, Sirikata::SpaceObjectReference, long> (this=0x8b7c18, func=&virtual table offset 16, 
      newA=std::tr1::shared_ptr (count 7) 0x8b7c00, newB=..., newC=-1) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/util/ListenerProvider.hpp:111
  #8  0x00007ffff6d2d475 in Sirikata::HostedObject::handleStreamCreated (this=0x8b7c00, spaceobj=..., token=-1) at /home/ewencp/sirikata.sirikata/liboh/src/HostedObject.cpp:504
  #9  0x00007ffff6d4846e in std::tr1::_Mem_fn<void (Sirikata::HostedObject::*)(Sirikata::SpaceObjectReference const&, Sirikata::int64)>::operator() (this=0x1026cc0, __object=0x8b7c00, __args#0=..., __args#1=-1) at /usr/include/c++/4.4/tr1_impl/functional:552
  #10 0x00007ffff6d46629 in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::HostedObject::*)(const Sirikata::SpaceObjectReference&, Sirikata::int64)>(Sirikata::HostedObject*, std::tr1::_Placeholder<1>, long int)>::__call<Sirikata::SpaceObjectReference const&, 0, 1, 2>(const std::tr1::tuple<Sirikata::SpaceObjectReference const&> &, std::tr1::_Index_tuple<0, 1, 2>) (this=0x1026cc0, __args=...) at /usr/include/c++/4.4/tr1_impl/functional:1137
  #11 0x00007ffff6d43d5c in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::HostedObject::*)(const Sirikata::SpaceObjectReference&, Sirikata::int64)>(Sirikata::HostedObject*, std::tr1::_Placeholder<1>, long int)>::operator()<const Sirikata::SpaceObjectReference>(const Sirikata::SpaceObjectReference &) (this=0x1026cc0, __args#0=...)
      at /usr/include/c++/4.4/tr1_impl/functional:1191
  #12 0x00007ffff6d412ce in std::tr1::_Function_handler<void(const Sirikata::SpaceObjectReference&), std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::HostedObject::*)(const Sirikata::SpaceObjectReference&, Sirikata::int64)>(Sirikata::HostedObject*, std::tr1::_Placeholder<1>, long int)> >::_M_invoke(const std::tr1::_Any_data &, const Sirikata::SpaceObjectReference &) (__functor=..., __args#0=...) at /usr/include/c++/4.4/tr1_impl/functional:1668
  #13 0x00007ffff6cd28bc in std::tr1::function<void(const Sirikata::SpaceObjectReference&)>::operator()(const Sirikata::SpaceObjectReference &) const (this=0x901948, __args#0=...) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #14 0x00007ffff6cbf214 in Sirikata::SessionManager::ObjectConnections::handleConnectStream (this=0x90de08, sporef_objid=..., do_cb=true) at /home/ewencp/sirikata.sirikata/liboh/src/SessionManager.cpp:174
  #15 0x00007ffff6ccc387 in Sirikata::SessionManager::spaceConnectCallback (this=0x90dc80, err=0, s=std::tr1::shared_ptr (count 10) 0x85b1240, spaceobj=...) at /home/ewencp/sirikata.sirikata/liboh/src/SessionManager.cpp:913
  #16 0x00007ffff6cefc4a in std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >, Sirikata::SpaceObjectReference)>::operator() (this=0x7c0d200, __object=0x90dc80, __args#0=0, __args#1=std::tr1::shared_ptr (count 10) 0x85b1240, __args#2=...)
      at /usr/include/c++/4.4/tr1_impl/functional:552
  #17 0x00007ffff6ce8732 in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >, Sirikata::SpaceObjectReference)>(Sirikata::SessionManager*, std::tr1::_Placeholder<1>, std::tr1::_Placeholder<2>, Sirikata::SpaceObjectReference)>::__call<int&, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >&, 0, 1, 2, 3>(const std::tr1::tuple<int&, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >&> &, std::tr1::_Index_tuple<0, 1, 2, 3>) (this=0x7c0d200, __args=...) at /usr/include/c++/4.4/tr1_impl/functional:1137
  #18 0x00007ffff6ce3528 in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >, Sirikata::SpaceObjectReference)>(Sirikata::SessionManager*, std::tr1::_Placeholder<1>, std::tr1::_Placeholder<2>, Sirikata::SpaceObjectReference)>::operator()<int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> > >(int &, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> > &) (this=0x7c0d200, __args#0=@0x7fffffffc334, __args#1=std::tr1::shared_ptr (count 10) 0x85b1240) at /usr/include/c++/4.4/tr1_impl/functional:1191
  #19 0x00007ffff6cdc597 in std::tr1::_Function_handler<void(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >), std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >, Sirikata::SpaceObjectReference)>(Sirikata::SessionManager*, std::tr1::_Placeholder<1>, std::tr1::_Placeholder<2>, Sirikata::SpaceObjectReference)> >::_M_invoke(const std::tr1::_Any_data &, int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >) (__functor=..., __args#0=0, __args#1=std::tr1::shared_ptr (count 10) 0x85b1240) at /usr/include/c++/4.4/tr1_impl/functional:1668
  #20 0x00007ffff6ce313e in std::tr1::function<void(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >)>::operator()(int, std::tr1::shared_ptr<Sirikata::Stream<Sirikata::SpaceObjectReference> >) const (this=0x85b1408, __args#0=0, __args#1=std::tr1::shared_ptr (count 10) 0x85b1240) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #21 0x00007ffff6cf72ce in Sirikata::Connection<Sirikata::SpaceObjectReference>::handleReplyPacket (this=0x7988780, received_stream_msg=0x8432770) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:879
  #22 0x00007ffff6cf25f7 in Sirikata::Connection<Sirikata::SpaceObjectReference>::parsePacket (this=0x7988780, received_channel_msg=0x18d9840) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:813
  #23 0x00007ffff6cebedf in Sirikata::Connection<Sirikata::SpaceObjectReference>::receiveMessage (this=0x7988780, recv_buff=0x7c0d558, len=33) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:1022
  #24 0x00007ffff6ce7767 in Sirikata::Connection<Sirikata::SpaceObjectReference>::receiveODPMessage (this=0x7988780, src=..., dst=..., payload=...) at /home/ewencp/sirikata.sirikata/libcore/include/sirikata/core/network/SSTImpl.hpp:800
  #25 0x00007ffff6cfc114 in std::tr1::_Mem_fn<void (Sirikata::Connection<Sirikata::SpaceObjectReference>::*)(Sirikata::ODP::Endpoint const&, Sirikata::ODP::Endpoint const&, Sirikata::DataReference<void const*>)>::operator() (this=0x14f8240, __object=0x7988780, __args#0=..., __args#1=..., __args#2=...) at /usr/include/c++/4.4/tr1_impl/functional:552
  #26 0x00007ffff6cf7d8e in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::Connection<Sirikata::SpaceObjectReference>::*)(const Sirikata::ODP::Endpoint&, const Sirikata::ODP::Endpoint&, Sirikata::DataReference<const void*>)>(Sirikata::Connection<Sirikata::SpaceObjectReference>*, std::tr1::_Placeholder<1>, std::tr1::_Placeholder<2>, std::tr1::_Placeholder<3>)>::__call<Sirikata::ODP::Endpoint const&, Sirikata::ODP::Endpoint const&, Sirikata::DataReference<void const*>&, 0, 1, 2, 3>(const std::tr1::tuple<Sirikata::ODP::Endpoint const&, Sirikata::ODP::Endpoint const&, Sirikata::DataReference<void const*>&> &, std::tr1::_Index_tuple<0, 1, 2, 3>) (this=0x14f8240, __args=...)
      at /usr/include/c++/4.4/tr1_impl/functional:1137
  #27 0x00007ffff6cf27b3 in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::Connection<Sirikata::SpaceObjectReference>::*)(const Sirikata::ODP::Endpoint&, const Sirikata::ODP::Endpoint&, Sirikata::DataReference<const void*>)>(Sirikata::Connection<Sirikata::SpaceObjectReference>*, std::tr1::_Placeholder<1>, std::tr1::_Placeholder<2>, std::tr1::_Placeholder<3>)>::operator()<const Sirikata::ODP::Endpoint, const Sirikata::ODP::Endpoint, Sirikata::DataReference<const void*> >(const Sirikata::ODP::Endpoint &, const Sirikata::ODP::Endpoint &, Sirikata::DataReference<void const*> &) (this=0x14f8240, __args#0=..., __args#1=..., __args#2=...) at /usr/include/c++/4.4/tr1_impl/functional:1191
  #28 0x00007ffff6cec0d5 in std::tr1::_Function_handler<void(const Sirikata::ODP::Endpoint&, const Sirikata::ODP::Endpoint&, Sirikata::DataReference<const void*>), std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::Connection<Sirikata::SpaceObjectReference>::*)(const Sirikata::ODP::Endpoint&, const Sirikata::ODP::Endpoint&, Sirikata::DataReference<const void*>)>(Sirikata::Connection<Sirikata::SpaceObjectReference>*, std::tr1::_Placeholder<1>, std::tr1::_Placeholder<2>, std::tr1::_Placeholder<3>)> >::_M_invoke(const std::tr1::_Any_data &, const Sirikata::ODP::Endpoint &, const Sirikata::ODP::Endpoint &, Sirikata::DataReference<void const*>) (__functor=..., __args#0=..., __args#1=..., __args#2=...)
      at /usr/include/c++/4.4/tr1_impl/functional:1668
  #29 0x00007ffff79cbfb2 in std::tr1::function<void(const Sirikata::ODP::Endpoint&, const Sirikata::ODP::Endpoint&, Sirikata::MemoryReference)>::operator()(const Sirikata::ODP::Endpoint &, const Sirikata::ODP::Endpoint &, Sirikata::MemoryReference) const (this=0x7bff348, __args#0=..., __args#1=..., __args#2=...) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #30 0x00007ffff79cf058 in Sirikata::ODP::DelegatePort::tryDeliver (this=0x16fe900, src_match_ep=..., src_real_ep=..., dst=..., data=...) at /home/ewencp/sirikata.sirikata/libcore/src/odp/DelegatePort.cpp:98
  #31 0x00007ffff79cef47 in Sirikata::ODP::DelegatePort::deliver (this=0x16fe900, src=..., dst=..., data=...) at /home/ewencp/sirikata.sirikata/libcore/src/odp/DelegatePort.cpp:84
  #32 0x00007ffff79caec1 in Sirikata::ODP::DelegateService::deliver (this=0x8b3400, src=..., dst=..., data=...) at /home/ewencp/sirikata.sirikata/libcore/src/odp/DelegateService.cpp:134
  #33 0x00007ffff6d2f007 in Sirikata::HostedObject::receiveMessage (this=0x8b7c00, space=..., msg=0x8490770) at /home/ewencp/sirikata.sirikata/liboh/src/HostedObject.cpp:553
  #34 0x00007ffff6d10071 in Sirikata::ObjectHost::handleObjectMessage (this=0x8b0a80, sporef_internalID=..., space=..., msg=0x8490770) at /home/ewencp/sirikata.sirikata/liboh/src/ObjectHost.cpp:170
  #35 0x00007ffff6d1e1e1 in std::tr1::_Mem_fn<void (Sirikata::ObjectHost::*)(Sirikata::SpaceObjectReference const&, Sirikata::SpaceID const&, Sirikata::Protocol::Object::ObjectMessage*)>::operator() (this=0xcb8840, __object=0x8b0a80, __args#0=..., __args#1=..., __args#2=0x8490770) at /usr/include/c++/4.4/tr1_impl/functional:552
  #36 0x00007ffff6d1c91d in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::ObjectHost::*)(const Sirikata::SpaceObjectReference&, const Sirikata::SpaceID&, Sirikata::Protocol::Object::ObjectMessage*)>(Sirikata::ObjectHost*, std::tr1::_Placeholder<1>, Sirikata::SpaceID, std::tr1::_Placeholder<2>)>::__call<Sirikata::SpaceObjectReference const&, Sirikata::Protocol::Object::ObjectMessage*&, 0, 1, 2, 3>(const std::tr1::tuple<Sirikata::SpaceObjectReference const&, Sirikata::Protocol::Object::ObjectMessage*&> &, std::tr1::_Index_tuple<0, 1, 2, 3>) (this=0xcb8840, __args=...) at /usr/include/c++/4.4/tr1_impl/functional:1137
  #37 0x00007ffff6d1a778 in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::ObjectHost::*)(const Sirikata::SpaceObjectReference&, const Sirikata::SpaceID&, Sirikata::Protocol::Object::ObjectMessage*)>(Sirikata::ObjectHost*, std::tr1::_Placeholder<1>, Sirikata::SpaceID, std::tr1::_Placeholder<2>)>::operator()<const Sirikata::SpaceObjectReference, Sirikata::Protocol::Object::ObjectMessage*>(const Sirikata::SpaceObjectReference &, Sirikata::Protocol::Object::ObjectMessage *&) (this=0xcb8840, __args#0=..., __args#1=@0x7fffffffd278) at /usr/include/c++/4.4/tr1_impl/functional:1191
  #38 0x00007ffff6d1784c in std::tr1::_Function_handler<void(const Sirikata::SpaceObjectReference&, Sirikata::Protocol::Object::ObjectMessage*), std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::ObjectHost::*)(const Sirikata::SpaceObjectReference&, const Sirikata::SpaceID&, Sirikata::Protocol::Object::ObjectMessage*)>(Sirikata::ObjectHost*, std::tr1::_Placeholder<1>, Sirikata::SpaceID, std::tr1::_Placeholder<2>)> >::_M_invoke(const std::tr1::_Any_data &, const Sirikata::SpaceObjectReference &, Sirikata::Protocol::Object::ObjectMessage *) (__functor=..., __args#0=..., __args#1=0x8490770) at /usr/include/c++/4.4/tr1_impl/functional:1668
  #39 0x00007ffff6cd5b4a in std::tr1::function<void(const Sirikata::SpaceObjectReference&, Sirikata::Protocol::Object::ObjectMessage*)>::operator()(const Sirikata::SpaceObjectReference &, Sirikata::Protocol::Object::ObjectMessage *) const (this=0x90dd98, __args#0=..., __args#1=0x8490770) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #40 0x00007ffff6cc83c1 in Sirikata::SessionManager::handleServerMessage (this=0x90dc80, msg=0x8490770) at /home/ewencp/sirikata.sirikata/liboh/src/SessionManager.cpp:760
  #41 0x00007ffff6cc7f75 in Sirikata::SessionManager::handleServerMessages (this=0x90dc80, conn=0x1788780) at /home/ewencp/sirikata.sirikata/liboh/src/SessionManager.cpp:727
  #42 0x00007ffff6cea97a in std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(Sirikata::SpaceNodeConnection*)>::operator() (this=0x17b3d00, __object=0x90dc80, __args#0=0x1788780) at /usr/include/c++/4.4/tr1_impl/functional:552
  #43 0x00007ffff6ce6a69 in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(Sirikata::SpaceNodeConnection*)>(Sirikata::SessionManager*, Sirikata::SpaceNodeConnection*)>::__call<, 0, 1>(const std::tr1::tuple<> &, std::tr1::_Index_tuple<0, 1>) (this=0x17b3d00, __args=...) at /usr/include/c++/4.4/tr1_impl/functional:1137
  #44 0x00007ffff6ce131d in std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(Sirikata::SpaceNodeConnection*)>(Sirikata::SessionManager*, Sirikata::SpaceNodeConnection*)>::operator()<>(void) (this=0x17b3d00) at /usr/include/c++/4.4/tr1_impl/functional:1191
  #45 0x00007ffff6cdb747 in std::tr1::_Function_handler<void(), std::tr1::_Bind<std::tr1::_Mem_fn<void (Sirikata::SessionManager::*)(Sirikata::SpaceNodeConnection*)>(Sirikata::SessionManager*, Sirikata::SpaceNodeConnection*)> >::_M_invoke(const std::tr1::_Any_data &) (__functor=...) at /usr/include/c++/4.4/tr1_impl/functional:1668
  #46 0x00007ffff7903bbb in std::tr1::function<void()>::operator()(void) const (this=0x7fffffffd6a0) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #47 0x00007ffff79eba4a in boost::asio::asio_handler_invoke<std::tr1::function<void()> >(std::tr1::function<void()>, ...) (function=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/handler_invoke_hook.hpp:62
  #48 0x00007ffff79eb4af in boost_asio_handler_invoke_helpers::invoke<std::tr1::function<void()>, std::tr1::function<void()> >(const std::tr1::function<void()> &, std::tr1::function<void()> &) (function=..., context=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/handler_invoke_helpers.hpp:41
  #49 0x00007ffff79f2c6f in boost::asio::detail::strand_service::handler_wrapper<std::tr1::function<void()> >::do_invoke(boost::asio::detail::strand_service::handler_base *, boost::asio::detail::strand_service &, boost::asio::detail::strand_service::strand_impl *&) (base=0x7950440, service_impl=..., impl=@0x7fffffffd838)
      at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/strand_service.hpp:261
  #50 0x00007ffff79f13f5 in boost::asio::detail::strand_service::handler_base::invoke (this=0x7950440, service_impl=..., impl=@0x7fffffffd838) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/strand_service.hpp:109
  #51 0x00007ffff79f1464 in boost::asio::detail::strand_service::invoke_current_handler::operator() (this=0x7fffffffd830) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/strand_service.hpp:144
  #52 0x00007ffff79f2b77 in boost::asio::asio_handler_invoke<boost::asio::detail::strand_service::invoke_current_handler> (function=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/handler_invoke_hook.hpp:62
  #53 0x00007ffff79f2965 in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::strand_service::invoke_current_handler, boost::asio::detail::strand_service::invoke_current_handler> (function=..., context=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/handler_invoke_helpers.hpp:41
  #54 0x00007ffff79f2ad7 in boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> >::dispatch<boost::asio::detail::strand_service::invoke_current_handler> (this=0x8b98c0, handler=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/task_io_service.hpp:180
  #55 0x00007ffff79f289f in boost::asio::io_service::dispatch<boost::asio::detail::strand_service::invoke_current_handler> (this=0x8b14b0, handler=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/impl/io_service.ipp:130
  #56 0x00007ffff79f2342 in boost::asio::detail::strand_service::dispatch<std::tr1::function<void()> >(boost::asio::detail::strand_service::strand_impl *&, std::tr1::function<void()>) (this=0x923080, impl=@0x119f518, handler=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/strand_service.hpp:374
  #57 0x00007ffff79f20e9 in boost::asio::io_service::strand::dispatch<std::tr1::function<void()> >(std::tr1::function<void()>) (this=0x119f510, handler=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/strand.hpp:158
  #58 0x00007ffff79f1d18 in boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, std::tr1::function<void()> >::operator()(void) (this=0x119f510) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/wrapped_handler.hpp:48
  #59 0x00007ffff79f1b5b in std::tr1::_Function_handler<void(), boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, std::tr1::function<void()> > >::_M_invoke(const std::tr1::_Any_data &) (__functor=...) at /usr/include/c++/4.4/tr1_impl/functional:1668
  #60 0x00007ffff7903bbb in std::tr1::function<void()>::operator()(void) const (this=0x7fffffffdbf0) at /usr/include/c++/4.4/tr1_impl/functional:2024
  #61 0x00007ffff79eba4a in boost::asio::asio_handler_invoke<std::tr1::function<void()> >(std::tr1::function<void()>, ...) (function=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/handler_invoke_hook.hpp:62
  #62 0x00007ffff79eb4af in boost_asio_handler_invoke_helpers::invoke<std::tr1::function<void()>, std::tr1::function<void()> >(const std::tr1::function<void()> &, std::tr1::function<void()> &) (function=..., context=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/handler_invoke_helpers.hpp:41
  #63 0x00007ffff79ec501 in handler_wrapper<std::tr1::function<void()> >::do_call(boost::asio::detail::handler_queue::handler *) (base=0x7950440) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/handler_queue.hpp:192
  #64 0x00007ffff7973f2f in boost::asio::detail::handler_queue::handler::invoke (this=0x7950440) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/handler_queue.hpp:39
  #65 0x00007ffff797a1e5 in boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> >::do_one (this=0x8b98c0, lock=..., this_idle_thread=0x7fffffffddd0, ec=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/task_io_service.hpp:268
  #66 0x00007ffff7976e5b in boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> >::run (this=0x8b98c0, ec=...) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/detail/task_io_service.hpp:103
  #67 0x00007ffff797444f in boost::asio::io_service::run (this=0x8b14b0) at /home/ewencp/sirikata.sirikata/dependencies/installed-boost/include/boost/asio/impl/io_service.ipp:68
  #68 0x00007ffff79e9e97 in Sirikata::Network::IOService::run (this=0x8b14d0) at /home/ewencp/sirikata.sirikata/libcore/src/network/IOService.cpp:102
  #69 0x00007ffff7a0244b in Sirikata::Context::run (this=0x8c4300, nthreads=1, exthreads=Sirikata::Context::IncludeOriginal) at /home/ewencp/sirikata.sirikata/libcore/src/service/Context.cpp:98
  #70 0x000000000040ce4d in main (argc=4, argv=0x7fffffffe298) at /home/ewencp/sirikata.sirikata/cppoh/src/main.cpp:181


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
cc: bmistree aquach ewencp
status: new
summary: Track line numbers in Emerson compiler, convert line numbers in backtraces to original source
description:
  Currently you get the line numbers from the compiled JavaScript because we are using V8's output directly. We need to track the line numbers when we compile, store it with the script (and all callbacks?) so we can convert values in the backtrace to the original source.


type: defect
component: Sirikata
priority: major
owner: nobody
reporter: ewencp
status: new
summary:
  emheadless should run an event loop and include system.event, system.timeout, and other non-VW related functions

description:
  emheadless currently only runs the initial script, which for many scripts isn't sufficient. emheadless should run an event loop (with Context and everything) allowing all the methods that don't interact with the world but are async to run from within emheadless and actually behave properly.


type: defect
component: Sirikata
priority: major
owner: bmistree
reporter: bmistree
status: new
summary: Performing further operations on a sandbox after you clear it causes seg fault.
description:
  Instead of deleting a sandbox's associated JSContextStruct when call clear, probably only want to delete it *after* get notification from v8's gc.


