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

android: signal 7 (SIGBUS), code 1 (BUS_ADRALN) #197

Closed
ozkriff opened this issue Jul 26, 2016 · 14 comments
Closed

android: signal 7 (SIGBUS), code 1 (BUS_ADRALN) #197

ozkriff opened this issue Jul 26, 2016 · 14 comments

Comments

@ozkriff
Copy link
Owner

ozkriff commented Jul 26, 2016

На данный момент это происходит в ветке WIP_gfx, но мне что-то подсказывает, что оно не пропадет после вливания в мастер.


RIght now it crashes in WIP_gfx branch, but looks like it still be crashing after merging to into master.

adb logcat -v time | grep 'Rust\|DEBUG'
07-26 09:19:13.228 D/RustAndroidGlueStdouterr(19877): Entering android_main
07-26 09:19:13.228 D/RustAndroidGlueStdouterr(19877): Creating application thread
07-26 09:19:30.518 I/DEBUG   (  443): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-26 09:19:30.518 I/DEBUG   (  443): Build fingerprint: 'Xiaomi/kenzo/kenzo:5.1.1/LMY47V/V7.3.7.0.LHOMIDD:user/release-keys'
07-26 09:19:30.518 I/DEBUG   (  443): Revision: '0'
07-26 09:19:30.518 I/DEBUG   (  443): ABI: 'arm'
07-26 09:19:30.518 I/DEBUG   (  443): pid: 19877, tid: 19906, name: rust.zoc  >>> rust.zoc <<<
07-26 09:19:30.518 I/DEBUG   (  443): signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0xe32bd0c2
07-26 09:19:30.558 I/DEBUG   (  443):     r0 e3800fc8  r1 e32bd0c2  r2 00000001  r3 e32bd0c2
07-26 09:19:30.558 I/DEBUG   (  443):     r4 e3801164  r5 e38011ac  r6 0000001d  r7 00000000
07-26 09:19:30.558 I/DEBUG   (  443):     r8 e3801670  r9 e40263d8  sl e3801c78  fp e3800f98
07-26 09:19:30.558 I/DEBUG   (  443):     ip 00000004  sp e3800f68  lr e40ff138  pc e40ff3b8  cpsr 600d0010
07-26 09:19:30.558 I/DEBUG   (  443): 
07-26 09:19:30.558 I/DEBUG   (  443): backtrace:
07-26 09:19:30.558 I/DEBUG   (  443):     #00 pc 0024a3b8  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer4geom26index_to_circle_vertex_rnd17h4fdc28498d8707a5E+64)
07-26 09:19:30.558 I/DEBUG   (  443):     #01 pc 0024a134  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer4geom22exact_pos_to_world_pos17h78d4994f5f0296afE+380)
07-26 09:19:30.558 I/DEBUG   (  443):     #02 pc 0024fe8c  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer15tactical_screen14TacticalScreen15add_map_objects17h420cba47cb86d87fE+1304)
07-26 09:19:30.558 I/DEBUG   (  443):     #03 pc 0024f13c  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer15tactical_screen14TacticalScreen3new17h61f9a4ba53b2dc9bE+3912)
07-26 09:19:30.558 I/DEBUG   (  443):     #04 pc 0025814c  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer16main_menu_screen14MainMenuScreen25handle_event_button_press17h93b77bec5c6ec831E+176)
07-26 09:19:30.558 I/DEBUG   (  443):     #05 pc 00258070  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer16main_menu_screen14MainMenuScreen24handle_event_lmb_release17hbb0b76ad5b53e4d0E+108)
07-26 09:19:30.558 I/DEBUG   (  443):     #06 pc 002587c4  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN91_$LT$visualizer..main_menu_screen..MainMenuScreen$u20$as$u20$visualizer..screen..Screen$GT$12handle_event17h11b385386398d722E+348)
07-26 09:19:30.558 I/DEBUG   (  443):     #07 pc 00263688  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer10Visualizer13handle_events17h61fc2bae63deec06E+820)
07-26 09:19:30.558 I/DEBUG   (  443):     #08 pc 002630e0  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN10visualizer10Visualizer4tick17hd01772e13b480bfeE+28)
07-26 09:19:30.558 I/DEBUG   (  443):     #09 pc 0017141c  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN3zoc4main17h308ba5ec18216eedE+68)
07-26 09:19:30.558 I/DEBUG   (  443):     #10 pc 005eb748  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN3std9panicking3try4call17h5df3ac2979db3c90E+28)
07-26 09:19:30.558 I/DEBUG   (  443):     #11 pc 005fa9f8  /data/app/rust.zoc-2/lib/arm/libmain.so (__rust_try+16)
07-26 09:19:30.558 I/DEBUG   (  443):     #12 pc 005fa8c4  /data/app/rust.zoc-2/lib/arm/libmain.so (__rust_maybe_catch_panic+28)
07-26 09:19:30.558 I/DEBUG   (  443):     #13 pc 005ea97c  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN3std2rt10lang_start17hfe9ab243c60ffb9bE+1188)
07-26 09:19:30.558 I/DEBUG   (  443):     #14 pc 001716f0  /data/app/rust.zoc-2/lib/arm/libmain.so (main+60)
07-26 09:19:30.558 I/DEBUG   (  443):     #15 pc 0068d078  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN8glue_obj12android_main28_$u7b$$u7b$closure$u7d$$u7d$17ha4de04c9f531cb2bE+28)
07-26 09:19:30.558 I/DEBUG   (  443):     #16 pc 00683968  /data/app/rust.zoc-2/lib/arm/libmain.so (_ZN23cargo_apk_injected_glue13android_main211main_thread17h46175ddba5b4db24E+172)
07-26 09:19:30.558 I/DEBUG   (  443):     #17 pc 0001333f  /system/lib/libc.so (_ZL15__pthread_startPv+30)
07-26 09:19:30.558 I/DEBUG   (  443):     #18 pc 00011357  /system/lib/libc.so (__start_thread+6)
07-26 09:19:30.718 I/DEBUG   (  443): 
07-26 09:19:30.718 I/DEBUG   (  443): Tombstone written to: /data/tombstones/tombstone_01

т.е. вообще какая-то внезапная ошибка не с самой графикой, а с геометрическими вычислениями О.о


Very strange error: it is not caused by GFX or something graphics-related, just math in Core module O.o

pub fn index_to_circle_vertex_rnd(count: ZInt, i: ZInt, pos: &MapPos) -> VertexCoord {                                                   
    let n = 2.0 * PI * (i as ZFloat) / (count as ZFloat);                                                                                
    let n = n + ((pos.v.x as ZFloat + pos.v.y as ZFloat) * 7.0) % 4.0; // TODO: remove magic numbers                                     
    VertexCoord {                                                                                                                        
        v: Vector3{x: n.cos(), y: n.sin(), z: 0.0} * HEX_EX_RADIUS                                                                       
    }                                                                                                                                    
}

что, блин, в этой функции так громко упасть вообще может я даже не знаю


I have no idead what can go wrong in that simple func

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 26, 2016

гугл говорит, что ошибка с выравниванием какая-то


Looks like it is related to memory alignment =\

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 26, 2016

если заменить все вызовы index_to_circle_vertex_rnd, то падает с ровно такой же ошибкой в недрах collision-rs, точнее при конструировании cgmath::Point3::new, где падать вообще нечему:


If I remove all index_to_circle_vertex_rnd calls then i fails with almost same error in cgmath::Point3::new c-tor somewhere inside collision-rs lib O.o

07-26 09:40:04.568 I/DEBUG   (  443): backtrace:
07-26 09:40:04.568 I/DEBUG   (  443):     #00 pc 0018e528  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN39_$LT$cgmath..point..Point3$LT$S$GT$$GT$3new17h0753e21f3596c886E+32)
07-26 09:40:04.568 I/DEBUG   (  443):     #01 pc 0017225c  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN105_$LT$cgmath..point..Point3$LT$S$GT$$u20$as$u20$core..ops..Add$LT$cgmath..vector..Vector3$LT$S$GT$$GT$$GT$3add17hd507749fa516a21aE+724)
07-26 09:40:04.568 I/DEBUG   (  443):     #02 pc 00180d8c  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN272_$LT$$LP$collision..plane..Plane$LT$S$GT$$C$$u20$collision..ray..Ray$LT$S$C$$u20$cgmath..point..Point3$LT$S$GT$$C$$u20$cgmath..vector..Vector3$LT$S$GT$$GT$$RP$$u20$as$u20$collision..intersect..Intersect$LT$core..option..Option$LT$cgmath..point..Point3$LT$S$GT$$GT$$GT$$GT$12intersection17h404085f2a945f6f2E+1064)
07-26 09:40:04.568 I/DEBUG   (  443):     #03 pc 0024f7b8  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN10visualizer15tactical_screen14TacticalScreen14pick_world_pos17hd1c4219807a621e1E+1220)
07-26 09:40:04.568 I/DEBUG   (  443):     #04 pc 00253b10  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN10visualizer15tactical_screen14TacticalScreen9pick_tile17h0f086d055293d05eE+40)
07-26 09:40:04.568 I/DEBUG   (  443):     #05 pc 00252a5c  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN10visualizer15tactical_screen14TacticalScreen24handle_event_lmb_release17heee9bead32eea7eaE+108)
07-26 09:40:04.568 I/DEBUG   (  443):     #06 pc 00255698  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN90_$LT$visualizer..tactical_screen..TacticalScreen$u20$as$u20$visualizer..screen..Screen$GT$12handle_event17h9f172044ec151ed4E+652)
07-26 09:40:04.568 I/DEBUG   (  443):     #07 pc 002636b8  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN10visualizer10Visualizer13handle_events17h61fc2bae63deec06E+820)
07-26 09:40:04.568 I/DEBUG   (  443):     #08 pc 00263110  /data/app/rust.zoc-1/lib/arm/libmain.so (_ZN10visualizer10Visualizer4tick17hd01772e13b480bfeE+28)
...

pub fn new(x: S, y: S, z: S) -> Point3<S> { { x: x, y: y, z: z } }

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 26, 2016

Чего-то я чувствую, самым эффективным способом решения проблемы будет попытка создать минимальный пример такой ошибки и https://github.com/rust-lang/rust/issues . Но это если получится воспроизвести на малом количестве кода, потому что остальная математика, вроде, вполне себе рабочая на телефоне.

Еще есть вариант старые версии cargo-apk попробовать, на всякий.

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 26, 2016

not-fl3 предложил попробовать убрать #[repr(C, packed)] из cgmath'овских типов.


not-fl3 proposed removing of #[repr(C, packed)] from cgmath's structs

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 26, 2016

убрал repr(C, packed) из объявления типов в cgmath - помогло. Вопрос теперь в том, что с этим делать дальше)


Yay, it works without #[repr(C, packed)]

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 29, 2016

Для начала надо обновиться до cgmath 0.10, до этого ничего делать не стоит


Anyway, first I must update to cgmath 0.10

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 29, 2016

Blocked by #190

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 29, 2016

Экспериментальным путем выяснено, что для нормального функционирования ZoC на андроиде можно убирать #[repr(C, packed)] не со всех типов, а только с Point3 и Vector2:


Minimal cgmath patch:

diff --git a/src/point.rs b/src/point.rs
index 8ee8393..394eeba 100644
--- a/src/point.rs
+++ b/src/point.rs
@@ -52,9 +52,8 @@ pub struct Point2<S> {

 /// A point in 3-dimensional space.
 ///
 /// This type is marked as `#[repr(C, packed)]`.
-#[repr(C, packed)]
 #[derive(PartialEq, Eq, Copy, Clone, Hash)]
 #[cfg_attr(feature = "rustc-serialize", derive(RustcEncodable, RustcDecodable))]
 #[cfg_attr(feature = "eders", derive(Serialize, Deserialize))]
 pub struct Point3<S> {
diff --git a/src/vector.rs b/src/vector.rs
index d3c7997..35238d5 100644
--- a/src/vector.rs
+++ b/src/vector.rs
@@ -39,9 +39,9 @@ pub struct Vector1<S> {

 /// A 2-dimensional vector.
 ///
 /// This type is marked as `#[repr(C, packed)]`.
-#[repr(C, packed)]
 #[derive(PartialEq, Eq, Copy, Clone, Hash)]
 #[cfg_attr(feature = "rustc-serialize", derive(RustcEncodable, RustcDecodable))]
 #[cfg_attr(feature = "eders", derive(Serialize, Deserialize))]
 pub struct Vector2<S> {

Хз почему именно так, странно все это.


I still don't understand why

@ozkriff
Copy link
Owner Author

ozkriff commented Jul 29, 2016

Надо попробовать создать отдельный репозиторий с минимальным примеров воспроизведения аналогичной ошибки. Может задачу стоит и в https://github.com/rust-lang/rust/issues сразу создавать, хз.


Should I create an issue in cgmath repo? Or in rust-lang/rust? Hmmm

@ozkriff
Copy link
Owner Author

ozkriff commented Sep 1, 2016

Из мастера cgmath удалили repr(packed), оставили только repr(C). Надо проверить как игра теперь себя на андроиде ведет.


All repr(packed) were removed in cgmath's master branch, only repr(C) are left.

@ozkriff
Copy link
Owner Author

ozkriff commented Sep 15, 2016

С переопределенными зависимостями прошло хорошо, надо теперь настоящие зависимости починить: cgmath обновлен и выложен на crates.io, но collision-rs надо обновить самому. С виду ничего очень сложного, просто так же перепилить на использование пакета approx.


It works ok with overriden deps, now real deps must be updated. Bjz updated cgmath on crates.io.

Not I'll go and update collision-rs to latest cgmath. Looks not to difficult, just employ new approx crate.

@ozkriff
Copy link
Owner Author

ozkriff commented Sep 15, 2016

Done. Waiting for https://github.com/csherratt/collision-rs/pull/20

@ozkriff
Copy link
Owner Author

ozkriff commented Sep 16, 2016

collision обновлен, #222 я тоже закрыл. Осталось собрать версию с чистыми зависимостями под андроид и посмотреть как оно себя поведет.


collision is updated, #222 is closed. Everything must work now, I will check fresh build on device this evening.

@ozkriff
Copy link
Owner Author

ozkriff commented Sep 16, 2016

После обновления android_glue до 2.1 (f78c1a9) андроид-версия наконец-то хорошо работает, еееее!


After updating android_glue to 2.1 (f78c1a9) ZoC finally works on android again, yay!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant