Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sync error #45

Closed
Iwark opened this issue Oct 21, 2022 · 8 comments · Fixed by #53
Closed

sync error #45

Iwark opened this issue Oct 21, 2022 · 8 comments · Fixed by #53
Assignees
Labels
bug Something isn't working

Comments

@Iwark
Copy link

Iwark commented Oct 21, 2022

Hello! Thanks for the great work 👍
Let me submit a bug report here.

Example code:

Let's say there's a Diff model to record every update from yjs doc.
The following code will raise an exception.

doc = Y::Doc.new
Page.first.diffs.order(:id).take(50).pluck(:diff).each do |diff|
  doc.sync(diff)
end

Exception:

thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', /home/runner/work/yrb/yrb/tmp/cargo-vendor/yrs/src/block.rs:125:82
/app/vendor/bundle/ruby/3.1.0/gems/y-rb-0.3.0-aarch64-linux/lib/y/transaction.rb:22:in `ytransaction_apply_update': called `Option::unwrap()` on a `None` value (fatal)

Here's some other information that may help solve the bug:

  • If I take 40 diffs instead of 50, it works correctly.
  • If I give the same data to javascript yjs, then Y.applyUpdate can handle them properly without any errors.
    • It's my workaround to return every diff to the client for now.
// This works 
diffs.forEach((diff) => {
  Y.applyUpdate(this.ydoc, Uint8Array.from(diff))
})

Here are the 50 diffs I used above.

[[1, 3, 197, 134, 244, 186, 10, 0, 7, 1, 7, 100, 101, 102, 97, 117, 108, 116, 3, 9, 112, 97, 114, 97, 103, 114, 97, 112, 104, 7, 0, 197, 134, 244, 186, 10, 0, 6, 4, 0, 197, 134, 244, 186, 10, 1, 1, 115, 0],
 [1, 1, 197, 134, 244, 186, 10, 3, 132, 197, 134, 244, 186, 10, 2, 3, 227, 129, 149, 1, 197, 134, 244, 186, 10, 1, 2, 1],
 [1, 4, 197, 134, 244, 186, 10, 0, 7, 1, 7, 100, 101, 102, 97, 117, 108, 116, 3, 9, 112, 97, 114, 97, 103, 114, 97, 112, 104, 7, 0, 197, 134, 244, 186, 10, 0, 6, 1, 0, 197, 134, 244, 186, 10, 1, 1, 132, 197, 134, 244, 186, 10, 2, 3, 227, 129, 149, 1, 197, 134, 244, 186, 10, 1, 2, 1],
 [1, 1, 197, 134, 244, 186, 10, 4, 132, 197, 134, 244, 186, 10, 3, 1, 120, 0],
 [1, 1, 197, 134, 244, 186, 10, 5, 132, 197, 134, 244, 186, 10, 4, 3, 227, 129, 129, 1, 197, 134, 244, 186, 10, 1, 4, 1],
 [1, 1, 197, 134, 244, 186, 10, 6, 132, 197, 134, 244, 186, 10, 5, 1, 107, 0],
 [1, 2, 197, 134, 244, 186, 10, 4, 129, 197, 134, 244, 186, 10, 3, 1, 132, 197, 134, 244, 186, 10, 4, 3, 227, 129, 129, 1, 197, 134, 244, 186, 10, 1, 4, 1],
 [1, 1, 197, 134, 244, 186, 10, 7, 132, 197, 134, 244, 186, 10, 6, 3, 227, 129, 147, 1, 197, 134, 244, 186, 10, 1, 6, 1],
 [1, 2, 197, 134, 244, 186, 10, 6, 129, 197, 134, 244, 186, 10, 5, 1, 132, 197, 134, 244, 186, 10, 6, 3, 227, 129, 147, 1, 197, 134, 244, 186, 10, 1, 6, 1],
 [1, 1, 197, 134, 244, 186, 10, 8, 132, 197, 134, 244, 186, 10, 7, 1, 114, 0],
 [1, 1, 197, 134, 244, 186, 10, 9, 132, 197, 134, 244, 186, 10, 8, 3, 227, 130, 140, 1, 197, 134, 244, 186, 10, 1, 8, 1],
 [1, 1, 197, 134, 244, 186, 10, 8, 132, 197, 134, 244, 186, 10, 7, 1, 114, 0],
 [1, 1, 197, 134, 244, 186, 10, 10, 132, 197, 134, 244, 186, 10, 9, 1, 107, 0],
 [1, 1, 197, 134, 244, 186, 10, 11, 132, 197, 134, 244, 186, 10, 10, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 1, 10, 1],
 [1, 1, 197, 134, 244, 186, 10, 12, 132, 197, 134, 244, 186, 10, 11, 1, 114, 0],
 [1, 1, 197, 134, 244, 186, 10, 13, 132, 197, 134, 244, 186, 10, 12, 3, 227, 130, 137, 1, 197, 134, 244, 186, 10, 1, 12, 1],
 [1, 1, 197, 134, 244, 186, 10, 9, 132, 197, 134, 244, 186, 10, 8, 3, 227, 130, 140, 1, 197, 134, 244, 186, 10, 1, 8, 1],
 [1, 1, 197, 134, 244, 186, 10, 10, 132, 197, 134, 244, 186, 10, 9, 1, 107, 0],
 [1, 1, 197, 134, 244, 186, 10, 11, 132, 197, 134, 244, 186, 10, 10, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 1, 10, 1],
 [1, 1, 197, 134, 244, 186, 10, 12, 132, 197, 134, 244, 186, 10, 11, 1, 114, 0],
 [1, 1, 197, 134, 244, 186, 10, 14, 132, 197, 134, 244, 186, 10, 13, 1, 98, 0],
 [1, 1, 197, 134, 244, 186, 10, 16, 132, 197, 134, 244, 186, 10, 15, 1, 103, 0],
 [1, 1, 197, 134, 244, 186, 10, 15, 132, 197, 134, 244, 186, 10, 14, 3, 227, 129, 176, 1, 197, 134, 244, 186, 10, 1, 14, 1],
 [1, 1, 197, 134, 244, 186, 10, 17, 132, 197, 134, 244, 186, 10, 16, 3, 227, 129, 144, 1, 197, 134, 244, 186, 10, 1, 16, 1],
 [1, 1, 197, 134, 244, 186, 10, 17, 132, 197, 134, 244, 186, 10, 16, 3, 227, 129, 144, 1, 197, 134, 244, 186, 10, 1, 16, 1],
 [1, 1, 197, 134, 244, 186, 10, 18, 132, 197, 134, 244, 186, 10, 17, 6, 227, 131, 144, 227, 130, 176, 1, 197, 134, 244, 186, 10, 2, 15, 1, 17, 1],
 [1, 1, 197, 134, 244, 186, 10, 20, 132, 197, 134, 244, 186, 10, 19, 1, 103, 0],
 [1, 3, 197, 134, 244, 186, 10, 13, 132, 197, 134, 244, 186, 10, 12, 3, 227, 130, 137, 129, 197, 134, 244, 186, 10, 13, 1, 132, 197, 134, 244, 186, 10, 14, 4, 227, 129, 176, 103, 1, 197, 134, 244, 186, 10, 2, 12, 1, 14, 1],
 [1, 1, 197, 134, 244, 186, 10, 21, 132, 197, 134, 244, 186, 10, 20, 3, 227, 129, 140, 1, 197, 134, 244, 186, 10, 1, 20, 1],
 [1, 1, 197, 134, 244, 186, 10, 23, 132, 197, 134, 244, 186, 10, 22, 3, 227, 129, 170, 1, 197, 134, 244, 186, 10, 1, 22, 1],
 [1, 3, 197, 134, 244, 186, 10, 18, 132, 197, 134, 244, 186, 10, 17, 6, 227, 131, 144, 227, 130, 176, 129, 197, 134, 244, 186, 10, 19, 1, 132, 197, 134, 244, 186, 10, 20, 3, 227, 129, 140, 1, 197, 134, 244, 186, 10, 3, 15, 1, 17, 1, 20, 1],
 [1, 1, 197, 134, 244, 186, 10, 24, 132, 197, 134, 244, 186, 10, 23, 3, 227, 129, 132, 0],
 [1, 1, 197, 134, 244, 186, 10, 22, 132, 197, 134, 244, 186, 10, 21, 1, 110, 0],
 [1, 1, 197, 134, 244, 186, 10, 26, 132, 197, 134, 244, 186, 10, 25, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 1, 25, 1],
 [1, 1, 197, 134, 244, 186, 10, 25, 132, 197, 134, 244, 186, 10, 24, 1, 107, 0],
 [1, 4, 197, 134, 244, 186, 10, 22, 129, 197, 134, 244, 186, 10, 21, 1, 132, 197, 134, 244, 186, 10, 22, 6, 227, 129, 170, 227, 129, 132, 129, 197, 134, 244, 186, 10, 24, 1, 132, 197, 134, 244, 186, 10, 25, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 2, 22, 1, 25, 1],
 [1, 1, 197, 134, 244, 186, 10, 27, 132, 197, 134, 244, 186, 10, 26, 1, 100, 0],
 [1, 1, 197, 134, 244, 186, 10, 28, 132, 197, 134, 244, 186, 10, 27, 3, 227, 129, 169, 1, 197, 134, 244, 186, 10, 1, 27, 1],
 [1, 2, 197, 134, 244, 186, 10, 27, 129, 197, 134, 244, 186, 10, 26, 1, 132, 197, 134, 244, 186, 10, 27, 3, 227, 129, 169, 1, 197, 134, 244, 186, 10, 1, 27, 1],
 [1, 1, 197, 134, 244, 186, 10, 29, 132, 197, 134, 244, 186, 10, 28, 3, 227, 129, 134, 0],
 [1, 1, 197, 134, 244, 186, 10, 30, 132, 197, 134, 244, 186, 10, 29, 1, 107, 0],
 [1, 1, 197, 134, 244, 186, 10, 29, 132, 197, 134, 244, 186, 10, 28, 3, 227, 129, 134, 0],
 [1, 1, 197, 134, 244, 186, 10, 31, 132, 197, 134, 244, 186, 10, 30, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 1, 30, 1],
 [1, 1, 197, 134, 244, 186, 10, 30, 132, 197, 134, 244, 186, 10, 29, 1, 107, 0],
 [1, 1, 197, 134, 244, 186, 10, 31, 132, 197, 134, 244, 186, 10, 30, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 1, 30, 1],
 [1, 1, 197, 134, 244, 186, 10, 32, 135, 197, 134, 244, 186, 10, 0, 3, 9, 112, 97, 114, 97, 103, 114, 97, 112, 104, 0],
 [1, 1, 197, 134, 244, 186, 10, 32, 135, 197, 134, 244, 186, 10, 0, 3, 9, 112, 97, 114, 97, 103, 114, 97, 112, 104, 0],
 [1, 2, 197, 134, 244, 186, 10, 33, 7, 0, 197, 134, 244, 186, 10, 32, 6, 4, 0, 197, 134, 244, 186, 10, 33, 1, 107, 0],
 [1, 1, 197, 134, 244, 186, 10, 35, 132, 197, 134, 244, 186, 10, 34, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 1, 34, 1],
 [1, 1, 197, 134, 244, 186, 10, 36, 132, 197, 134, 244, 186, 10, 35, 1, 107, 0]]

maybe It's related to this issue?
Let me know if there's anything I can help with it.

Thanks!

@eliias
Copy link
Collaborator

eliias commented Oct 21, 2022

@Iwark thanks for reporting. I am going to take a look.

Could you provide which type (Map, Array, Text, XMLElement, XMLText) and ID you use, e.g. doc.get_text("id")?

I can narrow down the issue to two updates (index: 1, 2), the others seem to work.

@eliias
Copy link
Collaborator

eliias commented Oct 21, 2022

I have decoded the two updates, and I can't really see a problem. I then skipped the other updates and they worked, so I thought it might be conflicting updates and I found the pair that caused the issue. @Horusiath could you help here?

Test setup https://github.com/y-crdt/yrb/blob/add-lib0/spec/regression_spec.rb

" { blocks: UpdateBlocks { clients: {2807890757: [Item(<2807890757#0>, len: 1, parent: default: <xml element: paragraph>), Item(<2807890757#1>, len: 1, parent: <2807890757#0>: <xml text>), Item(<2807890757#2>, len: 1, parent: <2807890757#1>: 's')]} } }"
" { blocks: UpdateBlocks { clients: {2807890757: [Item(<2807890757#3>, len: 1, origin-l: <2807890757#2>: 'さ')]} }, delete set:  { 2807890757: [2..3) } }"
" { blocks: UpdateBlocks { clients: {2807890757: [Item(<2807890757#0>, len: 1, parent: default: <xml element: paragraph>), Item(<2807890757#1>, len: 1, parent: <2807890757#0>: <xml text>), Item(<2807890757#2>, len: 1, parent: <2807890757#1>: deleted(1)), Item(<2807890757#3>, len: 1, origin-l: <2807890757#2>: 'さ')]} }, delete set:  { 2807890757: [2..3) } }"
" { blocks: UpdateBlocks { clients: {2807890757: [Item(<2807890757#32>, len: 1, origin-l: <2807890757#0>: <xml element: paragraph>)]} } }"```

@eliias eliias self-assigned this Oct 21, 2022
@eliias eliias added the bug Something isn't working label Oct 21, 2022
@eliias
Copy link
Collaborator

eliias commented Oct 21, 2022

When I apply the update and xml.to_s, the output is:

"<UNDEFINED><paragraph>s</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さx</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁk</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁk</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこr</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれ</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれk</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれか</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれかr</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれからb</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれからb</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれからば</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれからば</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれからば</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', /Users/hannesmoser/.cargo/registry/src/github.com-1ecc6299db9ec823/yrs-0.12.0/src/block.rs:125:82
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"
"<UNDEFINED><paragraph>さぁこれから</paragraph></UNDEFINED>"

@eliias
Copy link
Collaborator

eliias commented Oct 21, 2022

Here is a Rust only debug example https://github.com/y-crdt/yrb/blob/examples-rust-regression/examples/regression/src/main.rs

thread 'main' panicked at 'byte index 1 is not a char boundary; it is inside 'ば' (bytes 0..3) of `ばg`', library/core/src/str/mod.rs:127:5
use yrs::updates::decoder::Decode;
use yrs::{Doc, Update};

fn main() {
    let diffs: Vec<Vec<u8>> = vec![
        vec![
            1, 3, 197, 134, 244, 186, 10, 0, 7, 1, 7, 100, 101, 102, 97, 117, 108, 116, 3, 9, 112,
            97, 114, 97, 103, 114, 97, 112, 104, 7, 0, 197, 134, 244, 186, 10, 0, 6, 4, 0, 197,
            134, 244, 186, 10, 1, 1, 115, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 3, 132, 197, 134, 244, 186, 10, 2, 3, 227, 129, 149, 1,
            197, 134, 244, 186, 10, 1, 2, 1,
        ],
        vec![
            1, 4, 197, 134, 244, 186, 10, 0, 7, 1, 7, 100, 101, 102, 97, 117, 108, 116, 3, 9, 112,
            97, 114, 97, 103, 114, 97, 112, 104, 7, 0, 197, 134, 244, 186, 10, 0, 6, 1, 0, 197,
            134, 244, 186, 10, 1, 1, 132, 197, 134, 244, 186, 10, 2, 3, 227, 129, 149, 1, 197, 134,
            244, 186, 10, 1, 2, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 4, 132, 197, 134, 244, 186, 10, 3, 1, 120, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 5, 132, 197, 134, 244, 186, 10, 4, 3, 227, 129, 129, 1,
            197, 134, 244, 186, 10, 1, 4, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 6, 132, 197, 134, 244, 186, 10, 5, 1, 107, 0,
        ],
        vec![
            1, 2, 197, 134, 244, 186, 10, 4, 129, 197, 134, 244, 186, 10, 3, 1, 132, 197, 134, 244,
            186, 10, 4, 3, 227, 129, 129, 1, 197, 134, 244, 186, 10, 1, 4, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 7, 132, 197, 134, 244, 186, 10, 6, 3, 227, 129, 147, 1,
            197, 134, 244, 186, 10, 1, 6, 1,
        ],
        vec![
            1, 2, 197, 134, 244, 186, 10, 6, 129, 197, 134, 244, 186, 10, 5, 1, 132, 197, 134, 244,
            186, 10, 6, 3, 227, 129, 147, 1, 197, 134, 244, 186, 10, 1, 6, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 8, 132, 197, 134, 244, 186, 10, 7, 1, 114, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 9, 132, 197, 134, 244, 186, 10, 8, 3, 227, 130, 140, 1,
            197, 134, 244, 186, 10, 1, 8, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 8, 132, 197, 134, 244, 186, 10, 7, 1, 114, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 10, 132, 197, 134, 244, 186, 10, 9, 1, 107, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 11, 132, 197, 134, 244, 186, 10, 10, 3, 227, 129, 139, 1,
            197, 134, 244, 186, 10, 1, 10, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 12, 132, 197, 134, 244, 186, 10, 11, 1, 114, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 13, 132, 197, 134, 244, 186, 10, 12, 3, 227, 130, 137, 1,
            197, 134, 244, 186, 10, 1, 12, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 9, 132, 197, 134, 244, 186, 10, 8, 3, 227, 130, 140, 1,
            197, 134, 244, 186, 10, 1, 8, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 10, 132, 197, 134, 244, 186, 10, 9, 1, 107, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 11, 132, 197, 134, 244, 186, 10, 10, 3, 227, 129, 139, 1,
            197, 134, 244, 186, 10, 1, 10, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 12, 132, 197, 134, 244, 186, 10, 11, 1, 114, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 14, 132, 197, 134, 244, 186, 10, 13, 1, 98, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 16, 132, 197, 134, 244, 186, 10, 15, 1, 103, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 15, 132, 197, 134, 244, 186, 10, 14, 3, 227, 129, 176, 1,
            197, 134, 244, 186, 10, 1, 14, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 17, 132, 197, 134, 244, 186, 10, 16, 3, 227, 129, 144, 1,
            197, 134, 244, 186, 10, 1, 16, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 17, 132, 197, 134, 244, 186, 10, 16, 3, 227, 129, 144, 1,
            197, 134, 244, 186, 10, 1, 16, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 18, 132, 197, 134, 244, 186, 10, 17, 6, 227, 131, 144,
            227, 130, 176, 1, 197, 134, 244, 186, 10, 2, 15, 1, 17, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 20, 132, 197, 134, 244, 186, 10, 19, 1, 103, 0,
        ],
        vec![
            1, 3, 197, 134, 244, 186, 10, 13, 132, 197, 134, 244, 186, 10, 12, 3, 227, 130, 137,
            129, 197, 134, 244, 186, 10, 13, 1, 132, 197, 134, 244, 186, 10, 14, 4, 227, 129, 176,
            103, 1, 197, 134, 244, 186, 10, 2, 12, 1, 14, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 21, 132, 197, 134, 244, 186, 10, 20, 3, 227, 129, 140, 1,
            197, 134, 244, 186, 10, 1, 20, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 23, 132, 197, 134, 244, 186, 10, 22, 3, 227, 129, 170, 1,
            197, 134, 244, 186, 10, 1, 22, 1,
        ],
        vec![
            1, 3, 197, 134, 244, 186, 10, 18, 132, 197, 134, 244, 186, 10, 17, 6, 227, 131, 144,
            227, 130, 176, 129, 197, 134, 244, 186, 10, 19, 1, 132, 197, 134, 244, 186, 10, 20, 3,
            227, 129, 140, 1, 197, 134, 244, 186, 10, 3, 15, 1, 17, 1, 20, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 24, 132, 197, 134, 244, 186, 10, 23, 3, 227, 129, 132, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 22, 132, 197, 134, 244, 186, 10, 21, 1, 110, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 26, 132, 197, 134, 244, 186, 10, 25, 3, 227, 129, 139, 1,
            197, 134, 244, 186, 10, 1, 25, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 25, 132, 197, 134, 244, 186, 10, 24, 1, 107, 0,
        ],
        vec![
            1, 4, 197, 134, 244, 186, 10, 22, 129, 197, 134, 244, 186, 10, 21, 1, 132, 197, 134,
            244, 186, 10, 22, 6, 227, 129, 170, 227, 129, 132, 129, 197, 134, 244, 186, 10, 24, 1,
            132, 197, 134, 244, 186, 10, 25, 3, 227, 129, 139, 1, 197, 134, 244, 186, 10, 2, 22, 1,
            25, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 27, 132, 197, 134, 244, 186, 10, 26, 1, 100, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 28, 132, 197, 134, 244, 186, 10, 27, 3, 227, 129, 169, 1,
            197, 134, 244, 186, 10, 1, 27, 1,
        ],
        vec![
            1, 2, 197, 134, 244, 186, 10, 27, 129, 197, 134, 244, 186, 10, 26, 1, 132, 197, 134,
            244, 186, 10, 27, 3, 227, 129, 169, 1, 197, 134, 244, 186, 10, 1, 27, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 29, 132, 197, 134, 244, 186, 10, 28, 3, 227, 129, 134, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 30, 132, 197, 134, 244, 186, 10, 29, 1, 107, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 29, 132, 197, 134, 244, 186, 10, 28, 3, 227, 129, 134, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 31, 132, 197, 134, 244, 186, 10, 30, 3, 227, 129, 139, 1,
            197, 134, 244, 186, 10, 1, 30, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 30, 132, 197, 134, 244, 186, 10, 29, 1, 107, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 31, 132, 197, 134, 244, 186, 10, 30, 3, 227, 129, 139, 1,
            197, 134, 244, 186, 10, 1, 30, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 32, 135, 197, 134, 244, 186, 10, 0, 3, 9, 112, 97, 114,
            97, 103, 114, 97, 112, 104, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 32, 135, 197, 134, 244, 186, 10, 0, 3, 9, 112, 97, 114,
            97, 103, 114, 97, 112, 104, 0,
        ],
        vec![
            1, 2, 197, 134, 244, 186, 10, 33, 7, 0, 197, 134, 244, 186, 10, 32, 6, 4, 0, 197, 134,
            244, 186, 10, 33, 1, 107, 0,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 35, 132, 197, 134, 244, 186, 10, 34, 3, 227, 129, 139, 1,
            197, 134, 244, 186, 10, 1, 34, 1,
        ],
        vec![
            1, 1, 197, 134, 244, 186, 10, 36, 132, 197, 134, 244, 186, 10, 35, 1, 107, 0,
        ],
    ];

    let doc = Doc::new();
    let mut txn = doc.transact();
    for diff in diffs {
        Update::decode_v1(diff.as_slice())
            .map(|update| txn.apply_update(update))
            .expect("applying update failed");
    }
}

@Horusiath
Copy link

Horusiath commented Oct 24, 2022

@eliias Could you tell some details about the environment? I'm running your Rust debug example in windows rustc 1.65.0-nightly, yrs main branch (v0.12), and this check executes without issues. I can try to use macos as well, but I need to confirm if this issue is related to a particular build or not.

@eliias
Copy link
Collaborator

eliias commented Oct 24, 2022

@eliias Could you tell some details about the environment? I'm running your Rust debug example in windows rustc 1.65.0-nightly, yrs main branch (v0.12), and this check executes without issues. I can try to use macos as well, but I need to confirm if this issue is related to a particular build or not.

@Horusiath I can deterministically produce the error on a M1/Arm64 (MacOS 12.6), rustc version 1.63.0. I updated to 1.64.0, but same result. yrs is on 0.12 (the crate, not the main branch).

warning: `yrs` (lib) generated 27 warnings
   Compiling regression v0.1.0 (/Users/hannesmoser/src/github.com/y-crdt/yrb/examples/regression)
    Finished dev [unoptimized + debuginfo] target(s) in 8.86s
     Running `target/debug/regression`
thread 'main' panicked at 'byte index 1 is not a char boundary; it is inside 'ば' (bytes 0..3) of `ばg`', library/core/src/str/mod.rs:127:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

@eliias
Copy link
Collaborator

eliias commented Nov 1, 2022

@Iwark should be fixed with Release 0.3.2

@Iwark
Copy link
Author

Iwark commented Nov 2, 2022

Thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants