crash with chinese character emails #47

Closed
opened 2020-03-30 13:46:06 +03:00 by cycomanic · 13 comments

I'm getting a panic when trying to run the notmuch backend. Running with RUST_BACKTRACE=1 yields the following.

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/libcore/result.rs:1165:5
stack backtrace:
   0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
   1: core::fmt::write
   2: std::io::Write::write_fmt
   3: std::panicking::default_hook::{{closure}}
   4: std::panicking::default_hook
   5: std::panicking::rust_panic_with_hook
   6: std::panicking::continue_panic_fmt
   7: rust_begin_unwind
   8: core::panicking::panic_fmt
   9: core::result::unwrap_failed
  10: core::result::Result<T,E>::unwrap
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/result.rs:933
  11: <melib::backends::notmuch::NotmuchDb as core::ops::drop::Drop>::drop
             at melib/src/backends/notmuch.rs:77
  12: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  13: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  14: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  15: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  16: core::ptr::drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:165
  17: alloc::sync::Arc<T>::drop_slow
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/liballoc/sync.rs:706
  18: <alloc::sync::Arc<T> as core::ops::drop::Drop>::drop
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/liballoc/sync.rs:1234
  19: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  20: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  21: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  22: core::ptr::drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:165
  23: <alloc::vec::Vec<T> as core::ops::drop::Drop>::drop
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/liballoc/vec.rs:2302
  24: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  25: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  26: core::ptr::real_drop_in_place
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175
  27: core::mem::drop
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/mem/mod.rs:704
  28: meli::run_app
             at src/bin.rs:449
  29: meli::main
             at src/bin.rs:157
  30: std::rt::lang_start::{{closure}}
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libstd/rt.rs:61
  31: std::panicking::try::do_call
  32: __rust_maybe_catch_panic
  33: std::rt::lang_start_internal
  34: std::rt::lang_start
             at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libstd/rt.rs:61
  35: main
  36: __libc_start_main
  37: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
I'm getting a panic when trying to run the notmuch backend. Running with RUST_BACKTRACE=1 yields the following. ``` thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/libcore/result.rs:1165:5 stack backtrace: 0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt 1: core::fmt::write 2: std::io::Write::write_fmt 3: std::panicking::default_hook::{{closure}} 4: std::panicking::default_hook 5: std::panicking::rust_panic_with_hook 6: std::panicking::continue_panic_fmt 7: rust_begin_unwind 8: core::panicking::panic_fmt 9: core::result::unwrap_failed 10: core::result::Result<T,E>::unwrap at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/result.rs:933 11: <melib::backends::notmuch::NotmuchDb as core::ops::drop::Drop>::drop at melib/src/backends/notmuch.rs:77 12: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 13: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 14: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 15: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 16: core::ptr::drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:165 17: alloc::sync::Arc<T>::drop_slow at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/liballoc/sync.rs:706 18: <alloc::sync::Arc<T> as core::ops::drop::Drop>::drop at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/liballoc/sync.rs:1234 19: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 20: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 21: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 22: core::ptr::drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:165 23: <alloc::vec::Vec<T> as core::ops::drop::Drop>::drop at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/liballoc/vec.rs:2302 24: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 25: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 26: core::ptr::real_drop_in_place at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/ptr/mod.rs:175 27: core::mem::drop at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libcore/mem/mod.rs:704 28: meli::run_app at src/bin.rs:449 29: meli::main at src/bin.rs:157 30: std::rt::lang_start::{{closure}} at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libstd/rt.rs:61 31: std::panicking::try::do_call 32: __rust_maybe_catch_panic 33: std::rt::lang_start_internal 34: std::rt::lang_start at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libstd/rt.rs:61 35: main 36: __libc_start_main 37: _start note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. ```

Here is the trace when running with debug:

["ThreadId(3)"] src/workers.rs:203_21:	Waiting for work
["ThreadId(4)"] src/workers.rs:203_21:	["ThreadId(5)"] src/workers.rs:203_21:	Waiting for work
Waiting for work
["ThreadId(6)"] src/workers.rs:203_21:	Waiting for work
["main"] src/state.rs:346_9:	inserting mailbox hashes:
["ThreadId(3)"] src/workers.rs:211_33:	Got some work
["ThreadId(7)"] src/workers.rs:287_33:	&static_threads[&thread_id] = Worker { name: "Parsing todo", status: "Waiting for subworkers.." }
["main"] src/state.rs:144_21:	hash & mailbox: 10602554343703510768 INBOX
["main"] src/state.rs:144_21:	hash & mailbox: 13109668137688561691 Sent
["main"] src/state.rs:144_21:	hash & mailbox: 3288688478793996316 todo
["main"] src/components/mail/listing.rs:1213_71:	self.get_status(context) = "Mailbox: INBOX, Messages: 0, New: 0"
["main"] src/components/mail/listing.rs:1213_71:	self.get_status(context) = "Mailbox: INBOX, Messages: 0, New: 0"
["main"] src/conf/accounts.rs:757_42:	w.poll() = Ok(AsyncStatus<T>::NoUpdate)
["ThreadId(7)"] src/workers.rs:287_33:	&static_threads[&thread_id] = Worker { name: "Parsing INBOX", status: "Waiting for subworkers.." }
["ThreadId(5)"] src/workers.rs:211_33:	Got some work
["ThreadId(4)"] src/workers.rs:211_33:	Got some work
["ThreadId(7)"] src/workers.rs:287_33:	&static_threads[&thread_id] = Worker { name: "Parsing Sent", status: "Waiting for subworkers.." }
["main"] src/bin.rs:414_31:	&r = Ok(NewThread(ThreadId(11), "watching notmuch"))
["main"] src/bin.rs:414_31:	&r = Ok(Input(Char('j')))
["main"] src/bin.rs:414_31:	&r = Ok(Input(Char('k')))
["main"] src/bin.rs:414_31:	&r = Ok(Input(Char('j')))
["ThreadId(3)"] src/workers.rs:213_33:	finished work
["ThreadId(9)"] src/conf/accounts.rs:398_23:	mailbox_handle.poll_block() = Ok(AsyncStatus<T>::Payload(_))
["ThreadId(9)"] src/conf/accounts.rs:401_25:	notifying for 3288688478793996316
["ThreadId(9)"] src/conf/accounts.rs:398_23:	mailbox_handle.poll_block() = Ok(AsyncStatus<T>::Finished)
["ThreadId(9)"] src/conf/accounts.rs:407_25:	exiting
["main"] src/bin.rs:414_31:	&r = Ok(UIEvent(WorkerProgress(3288688478793996316)))
["main"] src/conf/accounts.rs:757_42:	w.poll() = Ok(AsyncStatus<T>::Payload(_))
["main"] src/conf/accounts.rs:762_25:	got payload in status for 3288688478793996316
["ThreadId(3)"] src/workers.rs:203_21:	Waiting for work
["main"] src/conf/accounts.rs:757_42:	w.poll() = Ok(AsyncStatus<T>::Finished)
["main"] src/conf/accounts.rs:794_25:	got finished in status for 3288688478793996316
["main"] src/bin.rs:414_31:	&r = Ok(UIEvent(WorkerProgress(3288688478793996316)))
["main"] src/bin.rs:414_31:	&r = Ok(UIEvent(StartupCheck(3288688478793996316)))
["main"] src/bin.rs:414_31:	&r = Ok(UIEvent(MailboxUpdate((0, 3288688478793996316))))
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: FromUtf8Error { bytes: [74, 111, 99, 104, 101, 110, 32, 83, 99, 104, 114, 246, 101, 100, 101, 114], error: Utf8Error { valid_up_to: 11, error_len: Some(1) } }', src/libcore/result.rs:1165:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/libcore/result.rs:1165:5
["main"] src/bin.rs:414_31:	&r = Ok(Input(Char('q')))
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/libcore/result.rs:1165:5
["ThreadId(6)"] src/workers.rs:206_29:	["ThreadId(7)"] src/workers.rs:249_25:	received thread_end_rx, quitting
received thread_end_rx, quitting
["ThreadId(6)"] src/workers.rs:228_17:	Thread 3 did 0 jobs.
["ThreadId(3)"] src/workers.rs:206_29:	received thread_end_rx, quitting
["ThreadId(3)"] src/workers.rs:228_17:	Thread 0 did 1 jobs.
Here is the trace when running with debug: ``` ["ThreadId(3)"] src/workers.rs:203_21: Waiting for work ["ThreadId(4)"] src/workers.rs:203_21: ["ThreadId(5)"] src/workers.rs:203_21: Waiting for work Waiting for work ["ThreadId(6)"] src/workers.rs:203_21: Waiting for work ["main"] src/state.rs:346_9: inserting mailbox hashes: ["ThreadId(3)"] src/workers.rs:211_33: Got some work ["ThreadId(7)"] src/workers.rs:287_33: &static_threads[&thread_id] = Worker { name: "Parsing todo", status: "Waiting for subworkers.." } ["main"] src/state.rs:144_21: hash & mailbox: 10602554343703510768 INBOX ["main"] src/state.rs:144_21: hash & mailbox: 13109668137688561691 Sent ["main"] src/state.rs:144_21: hash & mailbox: 3288688478793996316 todo ["main"] src/components/mail/listing.rs:1213_71: self.get_status(context) = "Mailbox: INBOX, Messages: 0, New: 0" ["main"] src/components/mail/listing.rs:1213_71: self.get_status(context) = "Mailbox: INBOX, Messages: 0, New: 0" ["main"] src/conf/accounts.rs:757_42: w.poll() = Ok(AsyncStatus<T>::NoUpdate) ["ThreadId(7)"] src/workers.rs:287_33: &static_threads[&thread_id] = Worker { name: "Parsing INBOX", status: "Waiting for subworkers.." } ["ThreadId(5)"] src/workers.rs:211_33: Got some work ["ThreadId(4)"] src/workers.rs:211_33: Got some work ["ThreadId(7)"] src/workers.rs:287_33: &static_threads[&thread_id] = Worker { name: "Parsing Sent", status: "Waiting for subworkers.." } ["main"] src/bin.rs:414_31: &r = Ok(NewThread(ThreadId(11), "watching notmuch")) ["main"] src/bin.rs:414_31: &r = Ok(Input(Char('j'))) ["main"] src/bin.rs:414_31: &r = Ok(Input(Char('k'))) ["main"] src/bin.rs:414_31: &r = Ok(Input(Char('j'))) ["ThreadId(3)"] src/workers.rs:213_33: finished work ["ThreadId(9)"] src/conf/accounts.rs:398_23: mailbox_handle.poll_block() = Ok(AsyncStatus<T>::Payload(_)) ["ThreadId(9)"] src/conf/accounts.rs:401_25: notifying for 3288688478793996316 ["ThreadId(9)"] src/conf/accounts.rs:398_23: mailbox_handle.poll_block() = Ok(AsyncStatus<T>::Finished) ["ThreadId(9)"] src/conf/accounts.rs:407_25: exiting ["main"] src/bin.rs:414_31: &r = Ok(UIEvent(WorkerProgress(3288688478793996316))) ["main"] src/conf/accounts.rs:757_42: w.poll() = Ok(AsyncStatus<T>::Payload(_)) ["main"] src/conf/accounts.rs:762_25: got payload in status for 3288688478793996316 ["ThreadId(3)"] src/workers.rs:203_21: Waiting for work ["main"] src/conf/accounts.rs:757_42: w.poll() = Ok(AsyncStatus<T>::Finished) ["main"] src/conf/accounts.rs:794_25: got finished in status for 3288688478793996316 ["main"] src/bin.rs:414_31: &r = Ok(UIEvent(WorkerProgress(3288688478793996316))) ["main"] src/bin.rs:414_31: &r = Ok(UIEvent(StartupCheck(3288688478793996316))) ["main"] src/bin.rs:414_31: &r = Ok(UIEvent(MailboxUpdate((0, 3288688478793996316)))) thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: FromUtf8Error { bytes: [74, 111, 99, 104, 101, 110, 32, 83, 99, 104, 114, 246, 101, 100, 101, 114], error: Utf8Error { valid_up_to: 11, error_len: Some(1) } }', src/libcore/result.rs:1165:5 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace. thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/libcore/result.rs:1165:5 ["main"] src/bin.rs:414_31: &r = Ok(Input(Char('q'))) thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/libcore/result.rs:1165:5 ["ThreadId(6)"] src/workers.rs:206_29: ["ThreadId(7)"] src/workers.rs:249_25: received thread_end_rx, quitting received thread_end_rx, quitting ["ThreadId(6)"] src/workers.rs:228_17: Thread 3 did 0 jobs. ["ThreadId(3)"] src/workers.rs:206_29: received thread_end_rx, quitting ["ThreadId(3)"] src/workers.rs:228_17: Thread 0 did 1 jobs. ```

Some more info. I've narrowed it down to some spam messages with chinese characters. Here is one of the offending messages (from notmuch show):

message{ id:8f832ff8-02a3-4b0d-9ced-4c8f9f708559 depth:0 match:1 excluded:0 filename:/home/jschrod/.Mail/Chalmers/INBOX/new/1585554068.M143105071P11995Q27432Rc0c2cca5.linux-rxj5

header{
<hk13642980935@hotmail.com> (Thu. 02:17) (inbox unread)
Subject: 大陆出口香港专线,可接化妆品,口罩,洗发水,洗手液等
From: <hk13642980935@hotmail.com>
To: jochen.schroeder@chalmers.se
Date: Thu, 26 Mar 2020 09:17:12 +0800

header}

body{

part{ ID: 1, Content-type: multipart/alternative

part{ ID: 2, Content-type: text/plain
&nbsp;
&nbsp;大陆出口香港专线,可接化妆品,口罩,洗发水,洗手液等
&nbsp;■&nbsp; 大陆上门提货,运输报关一条龙服务
&nbsp;■&nbsp; 香港有卸货平台,可提供装卸货,拼箱,仓储服务
&nbsp;■&nbsp; 九龙/新界/港岛派送公司以及仓库
&nbsp;■ &nbsp;香港机场/仓码头仓入仓服务
&nbsp;
联系我们
联系人:Jack
Mobile&nbsp;:+86-13642980935 (微信同号)
E-mail :&nbsp;hk13642980935@hotmail.com
                                       part}

part{ ID: 3, Content-type: text/html
Non-text part: text/html

part}

part}

body}

message}
Some more info. I've narrowed it down to some spam messages with chinese characters. Here is one of the offending messages (from notmuch show): ``` message{ id:8f832ff8-02a3-4b0d-9ced-4c8f9f708559 depth:0 match:1 excluded:0 filename:/home/jschrod/.Mail/Chalmers/INBOX/new/1585554068.M143105071P11995Q27432Rc0c2cca5.linux-rxj5 header{ <hk13642980935@hotmail.com> (Thu. 02:17) (inbox unread) Subject: 大陆出口香港专线,可接化妆品,口罩,洗发水,洗手液等 From: <hk13642980935@hotmail.com> To: jochen.schroeder@chalmers.se Date: Thu, 26 Mar 2020 09:17:12 +0800 header} body{ part{ ID: 1, Content-type: multipart/alternative part{ ID: 2, Content-type: text/plain &nbsp; &nbsp;大陆出口香港专线,可接化妆品,口罩,洗发水,洗手液等 &nbsp;■&nbsp; 大陆上门提货,运输报关一条龙服务 &nbsp;■&nbsp; 香港有卸货平台,可提供装卸货,拼箱,仓储服务 &nbsp;■&nbsp; 九龙/新界/港岛派送公司以及仓库 &nbsp;■ &nbsp;香港机场/仓码头仓入仓服务 &nbsp; 联系我们 联系人:Jack Mobile&nbsp;:+86-13642980935 (微信同号) E-mail :&nbsp;hk13642980935@hotmail.com part} part{ ID: 3, Content-type: text/html Non-text part: text/html part} part} body} message} ```
cycomanic changed title from notmuch backend crash to crash with chinese character emails 2020-03-31 18:25:15 +03:00

I renamed the bug, because I'm not sure this is actually a notmuch backend bug.

I renamed the bug, because I'm not sure this is actually a notmuch backend bug.

OK one more follow up, maybe the bug is related to notmuch. If I forward the email to my fastmail account things work with the jmap backend

OK one more follow up, maybe the bug is related to notmuch. If I forward the email to my fastmail account things work with the jmap backend

Can you share the file (ie /home/jschrod/.Mail/Chalmers/INBOX/new/1585554068.M143105071P11995Q27432Rc0c2cca5.linux-rxj5)?

Can you share the file (ie `/home/jschrod/.Mail/Chalmers/INBOX/new/1585554068.M143105071P11995Q27432Rc0c2cca5.linux-rxj5`)?
Manos Pitsidianakis added the
bug
label 2020-03-31 19:12:52 +03:00

I had to zip the file, because I could not upload txt files.

I had to zip the file, because I could not upload txt files.
4.1 KiB

Hm I can't reproduce this crash. I can view it just fine with the notmuch backend. Were you doing something specific when it happened?

Hm I can't reproduce this crash. I can view it just fine with the notmuch backend. Were you doing something specific when it happened?

It happens when I open meli with "INBOX" = { query="tag:inbox", subscribe=true}

However I've just found that I still get the crash even without that file. So I'm not sure if it was actually that mail (I tested with "INBOX" {query="thread:xxxx", subscribe=true} where the xxx corresponded to the thread of the above mail. I will see if I can find another email that is causing issues.
Is there a way I can search the whole notmuch database, not just the subscribed mailbox?

It happens when I open meli with "INBOX" = { query="tag:inbox", subscribe=true} However I've just found that I still get the crash even without that file. So I'm not sure if it was actually that mail (I tested with "INBOX" {query="thread:xxxx", subscribe=true} where the xxx corresponded to the thread of the above mail. I will see if I can find another email that is causing issues. Is there a way I can search the whole notmuch database, not just the subscribed mailbox?

The query will look into the entire database, as notmuch doesn't have a concept of mailboxes. If you mean search as in search from within meli, it searches the entire database (meaning it doesn't AND with the virtual mailbox's query)

The query will look into the entire database, as notmuch doesn't have a concept of mailboxes. If you mean search as in search from within meli, it searches the entire database (meaning it doesn't `AND` with the virtual mailbox's query)

OK here is another one that causes issues for me, but even after removing that message I get a crash.

OK here is another one that causes issues for me, but even after removing that message I get a crash.

That's weird if I subscribe to a different mailbox (i.e. a different tag) and I do a search tag:inbox I do not get all results but just the results that have that tag in the current mailbox. I am using the "/" shortcut and then tag:inbox

That's weird if I subscribe to a different mailbox (i.e. a different tag) and I do a search tag:inbox I do not get all results but just the results that have that tag in the current mailbox. I am using the "/" shortcut and then tag:inbox

Let me know if I can do anything else to debug. If you point me to the right file where I should look I can try to debug further myself.

Let me know if I can do anything else to debug. If you point me to the right file where I should look I can try to debug further myself.

Looks like it was the second e-mail. in melib/src/email/address.rs:179 there's an assumption that the string is valid utf-8 but the email contains an invalid string inside the MIME encoded word part of the To header value. I changed it to a lossy UTF-8 conversion instead and it won't crash.

Looks like it was the second e-mail. in `melib/src/email/address.rs:179` there's an assumption that the string is valid utf-8 but the email contains an invalid string inside the MIME encoded word part of the `To` header value. I changed it to a lossy UTF-8 conversion instead and it won't crash.
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: meli/meli#47
There is no content yet.