def duphash(opts = {})
      opts = {:frames => 0, :flags => :normal, :prefix => ""}.merge(opts)
      str_pointer = Satyr::FFI.sr_thread_get_duphash @struct.to_ptr, opts[:frames], opts[:prefix], opts[:flags]
      raise SatyrError, "Failed to compute duphash" if str_pointer.null?
      hash = str_pointer.read_string
      Satyr::set_encoding hash
      Satyr::FFI.free str_pointer
      hash
    end
def duphash(opts = {})
      opts = {:frames => 0, :flags => :normal, :prefix => ""}.merge(opts)
      str_pointer = Satyr::FFI.sr_thread_get_duphash @struct.to_ptr, opts[:frames], opts[:prefix], opts[:flags]
      raise SatyrError, "Failed to compute duphash" if str_pointer.null?
      hash = str_pointer.read_string
      Satyr::set_encoding hash
      Satyr::FFI.free str_pointer
      hash
    end
Duplication hash for the thread
 The method takes an option hash with following keys:
 - +:frames+:: number of frames to use (default 0 means use all)
 - +:flags+:: bitwise sum of (:normal, :nohash, :nonormalize,
              :koops_compat)
 - +:prefix+:: string to be prepended in front of the text before hashing