facebookincubator / oculus-linux-kernel

The Linux kernel code for Oculus devices
https://www.kernel.org/
Other
152 stars 26 forks source link

binder: `undelivered transaction` and `binder_alloc_buf, no vma` #12

Open kungfooman opened 2 years ago

kungfooman commented 2 years ago

Dear Oculus team,

I used to be able to use my Oculus Go for VR development and I always had WLAN disabled to not receive any unwanted updates. However, a few days ago I decided to turn WLAN on again and it updated everything... first thing I had to do was a factory reset, because otherwise I would only see the three-dots-issue.

But after the update the entire Oculus browser fails to render anything. I connect to my local web server and the page is simply white. On one occasion it actually displayed the content, after I entered Firefox Reality, quit it and opened Oculus browser again (Firefox Reality renders properly). When I open a video, the sound plays but the video is just white aswell.

I tried to debug this issue, but since you took every opportunity to turn Linux into a straight jacket, it is very hard to do so even with years of C and Linux experience...

So the only pointer I have so far is dmesg:

[12512.492161] cnss_wlan_pci 0000:01:00.0: enabling device (0000 -> 0002)
[12512.505223] cnss: runtime resume status: 0
[12513.000839] binder: undelivered transaction 7300632
[12513.000858] binder: undelivered transaction 7300662
[12513.000865] binder: undelivered transaction 7300667
[12513.000870] binder: undelivered transaction 7300668
[12513.000927] binder: undelivered transaction 7300625
[12513.651903] binder: 12416: binder_alloc_buf, no vma
[12513.651924] binder: 963:1278 transaction failed 29201, size 76-0
[12513.660129] binder: undelivered transaction 7301501
[12513.749233] type=1400 audit(1659621008.024:321): avc: denied { getattr } for pid=14780 comm="boxed_process18" path="/data/data/com.oculus.browser" dev="sda8" ino=767072 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
[12514.152344] cnss: runtime suspend status: 0
[12514.333118] cnss_wlan_pci 0000:01:00.0: Refused to change power state, currently in D3
[12514.408594] cnss_wlan_pci 0000:01:00.0: enabling device (0000 -> 0002)
[12514.419848] cnss: runtime resume status: 0
[12514.818059] type=1400 audit(1659621009.091:322): avc: denied { getattr } for pid=14804 comm="boxed_process19" path="/data/data/com.oculus.browser" dev="sda8" ino=767072 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
[12514.832484] binder: undelivered transaction 7302950
[12514.832504] binder: undelivered transaction 7302974
[12514.832512] binder: undelivered transaction 7302992
[12514.832517] binder: undelivered transaction 7303004
[12514.832622] binder: undelivered transaction 7302945
[12515.209396] cnss: runtime suspend status: 0
[12516.538518] cnss_wlan_pci 0000:01:00.0: Refused to change power state, currently in D3
[12516.599372] cnss_wlan_pci 0000:01:00.0: enabling device (0000 -> 0002)
[12516.609398] cnss: runtime resume status: 0
[12518.465212] cnss: runtime suspend status: 0
[12518.478635] cnss_wlan_pci 0000:01:00.0: Refused to change power state, currently in D3
[12518.540408] cnss_wlan_pci 0000:01:00.0: enabling device (0000 -> 0002)
[12518.562003] cnss: runtime resume status: 0
[12518.602096] type=1400 audit(1659621012.864:323): avc: denied { getattr } for pid=14828 comm="boxed_process20" path="/data/data/com.oculus.browser" dev="sda8" ino=767072 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
[12521.094379] cnss: runtime suspend status: 0
[12521.105204] cnss_wlan_pci 0000:01:00.0: Refused to change power state, currently in D3
[12521.165429] cnss_wlan_pci 0000:01:00.0: enabling device (0000 -> 0002)
[12521.175963] cnss: runtime resume status: 0
pacific:/ $

Based on this article [1] [12513.651903] binder: 12416: binder_alloc_buf, no vma indicates that probably a Chrome background process crashed or maybe some right issue regarding /data/data/com.oculus.browser?

Hereby I also inform you about the European Right to repair which requires you to allow me to fix my own system [2].

That means:

[1] https://chengyihe.wordpress.com/2015/10/19/android-binder-error-log-binder_alloc_buf-no-vma/ [2] https://www.europarl.europa.eu/meetdocs/2014_2019/plmrep/COMMITTEES/IMCO/DV/2022/03-16/MfR_RighttoRepair_EN.pdf

Thank you for your attention, Hermann Rolfes

rajatgupta1998 commented 2 years ago

@kungfooman it might be a very bold step but has anyone in AOSP community tried building something for the Oculus devices? Like a custom kernel or a root solution?

kungfooman commented 1 year ago

Like a custom kernel or a root solution?

Hi @rajatgupta1998, thank you for the link! I wasn't aware of it and I just tried it and it works like a charm. I don't know what you mean by root solution, since the unlocked Go has root access. Can you elaborate on that?

I don't know about a custom kernel, but if the community is able to fix this browser bug, then I would love to use or contribute to it.

I didn't find any time for further testing so far if the browser bug even still exists in this unlocked version.

WolfLink115 commented 1 year ago

@rajatgupta1998 I have been working on getting TWRP recovery ported to the Oculus Go. There are no device sources so I am having trouble with setting up a working tree. I got it booting but sadly I keep having trouble with setting up A/B partitioning. I have tried multiple things in order to try getting something to mount properly but I keep coming up short.

To add onto that I have also tried working on getting the Mainline Linux kernel working on the device. It boots, but nothing except the display seems to work.

I plan on trying to get the TWRP port mostly working then move on to getting AOSP or LineageOS ported. I am a beginner in porting but I have faith I can do it.

kungfooman commented 1 year ago

then move on to getting AOSP or LineageOS ported

I'm very happy to hear... I wish you a lot of success (and maybe a bit of luck 👀😵)

WolfLink115 commented 1 year ago

then move on to getting AOSP or LineageOS ported

I'm very happy to hear... I wish you a lot of success (and maybe a bit of luck 👀😵)

Thank you, I appreciate that. I just realized, your name was super familiar and I just realized why lol

I think I first saw your name in some group on Telegram, but I think I actually spoke to you in the Halium group

MrMEEE commented 4 months ago

@WolfLink115 Did you get any further on porting TWRP or build a custom firmware?

I was looking into the same thing, but wanted to know how far you got?

WolfLink115 commented 4 months ago

@WolfLink115 Did you get any further on porting TWRP or build a custom firmware?

I was looking into the same thing, but wanted to know how far you got?

I got TWRP ported with almost everything working but I somehow bricked the headset (I booted LK2ND and tried to boot an EDK2 image I built to the headset and the speakers made a "pop" sound, went black, and showed up in the PC briefly then it cut off and never booted again as well as never showed in the PC again). I can't work on it until I get another headset so sadly there is not gonna be any progress from me until that happens. I got a job now so we shall see what happens.