You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I noticed, when building an app for a 32 bit target, that some rustc flatbuffers would fail to validate, when a uint64 was serialized by a i686 machine.
I reproduced this by checking out the flatbuffers and running the test suite, and noticed that one of the test cases specifically about uint64 alignment failed on this target:
rustup target add i686-unknown-linux-gnu
cd flatbuffers32/tests/rust_usage_test
cargo test --target=i686-unknown-linux-gnu
cargo test --test integration_test --target=i686-unknown-linux-gnu push_u8_u64_alignment
warning: unused import: `MapReaderIndexer`
--> /home/danielrh/dev/flatbuffers32/rust/flexbuffers/src/reader/mod.rs:29:26
|
29 | pub use map::{MapReader, MapReaderIndexer};
| ^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: `flexbuffers` (lib) generated 1 warning (run `cargo fix --lib -p flexbuffers` to apply 1 suggestion)
warning: variable `Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:51:9
|
51 | let Message = match self.Message_type() {
| ^^^^^^^ help: convert the identifier to snake case: `message`
|
= note: `#[warn(non_snake_case)]` on by default
warning: method `Message_type` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:76:10
|
76 | pub fn Message_type(&self) -> GameMessage {
| ^^^^^^^^^^^^ help: convert the identifier to snake case: `message_type`
warning: method `Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:83:10
|
83 | pub fn Message(&self) -> Option<flatbuffers::Table<'a>> {
| ^^^^^^^ help: convert the identifier to snake case: `message`
warning: structure field `Message_type` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:156:9
|
156 | pub Message_type: GameMessage,
| ^^^^^^^^^^^^ help: convert the identifier to snake case: `message_type`
warning: structure field `Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:157:9
|
157 | ...ub Message: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffse...
| ^^^^^^^ help: convert the identifier to snake case: `message`
warning: method `add_Message_type` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:175:10
|
175 | pub fn add_Message_type(&mut self, Message_type: GameMessage) {
| ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `add_message_type`
warning: variable `Message_type` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:175:38
|
175 | pub fn add_Message_type(&mut self, Message_type: GameMessage) {
| ^^^^^^^^^^^^ help: convert the identifier to snake case: `message_type`
warning: method `add_Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:179:10
|
179 | pub fn add_Message(&mut self, Message: flatbuffers::WIPOffset<flatbuf...
| ^^^^^^^^^^^ help: convert the identifier to snake case: `add_message`
warning: variable `Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:179:33
|
179 | ...f, Message: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
| ^^^^^^^ help: convert the identifier to snake case: `message`
warning: structure field `Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:234:7
|
234 | pub Message: GameMessageT,
| ^^^^^^^ help: convert the identifier to snake case: `message`
warning: variable `Message_type` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:248:9
|
248 | let Message_type = self.Message.game_message_type();
| ^^^^^^^^^^^^ help: convert the identifier to snake case: `message_type`
warning: variable `Message` should have a snake case name
--> tests/../../rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs:249:9
|
249 | let Message = self.Message.pack(_fbb);
| ^^^^^^^ help: convert the identifier to snake case: `message`
warning: `rust_usage_test` (test "integration_test") generated 12 warnings
Finished test [unoptimized + debuginfo] target(s) in 0.03s
Running tests/integration_test.rs (target/i686-unknown-linux-gnu/debug/deps/integration_test-7966cfe9a55a34cc)
running 1 test
test flatbuffers_tests::push_impls::push_u8_u64_alignment ... FAILED
failures:
---- flatbuffers_tests::push_impls::push_u8_u64_alignment stdout ----
thread 'flatbuffers_tests::push_impls::push_u8_u64_alignment' panicked at tests/integration_test.rs:2360:9:
assertion `left == right` failed
left: [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
right: [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
flatbuffers_tests::push_impls::push_u8_u64_alignment
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 261 filtered out; finished in 0.00s
error: test failed, to rerun pass `--test integration_test`
danielrh@vectron:~/dev/flatbuffers32/tests/rust_usage_test$
This was the same issue that was leading to failures with my rust application on a 32 bit target; the 32 bit rust target failed to pad the 64 bit value to align with 64 bits. Perhaps it had to do with usage of platform-specific core::mem::{align_of, size_of}; that may be defined differently on architectures with more relaxed requirements than the flatbuffer serialization format.
The text was updated successfully, but these errors were encountered:
I noticed, when building an app for a 32 bit target, that some rustc flatbuffers would fail to validate, when a uint64 was serialized by a i686 machine.
I reproduced this by checking out the flatbuffers and running the test suite, and noticed that one of the test cases specifically about uint64 alignment failed on this target:
This was the same issue that was leading to failures with my rust application on a 32 bit target; the 32 bit rust target failed to pad the 64 bit value to align with 64 bits. Perhaps it had to do with usage of platform-specific
core::mem::{align_of, size_of};
that may be defined differently on architectures with more relaxed requirements than the flatbuffer serialization format.The text was updated successfully, but these errors were encountered: