spion / adbfs-rootless

Mount Android phones on Linux with adb. No root required.
Other
912 stars 73 forks source link

mount fails with "socket not bound" on CM 10 (Android 4.1.2) #4

Open IzzySoft opened 9 years ago

IzzySoft commented 9 years ago

I have an issue comparable with #3 – just giving a different error when trying to cd into the mount:

cd: /mnt/droid: socket not bound

Using your advice from over there, running with the -f parameter:

--*-- exec_command: adb shell ls
--*-- exec_command: adb shell ls -l -a -d '/.Trash'
Error: signal 11:
./adbfs[0x40267c]
/lib/x86_64-linux-gnu/libc.so.6(+0x36150)[0x7fd464d09150]
/lib/x86_64-linux-gnu/libc.so.6(+0x3c784)[0x7fd464d0f784]
/lib/x86_64-linux-gnu/libc.so.6(atoi+0x10)[0x7fd464d0c690]
./adbfs[0x404956]
/lib/libfuse.so.2(+0xde08)[0x7fd4657d2e08]
/lib/libfuse.so.2(+0xed09)[0x7fd4657d3d09]
/lib/libfuse.so.2(+0x110e6)[0x7fd4657d60e6]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7fd465099e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fd464dc72ed]
--*-- exec_command: rm -rf /tmp/adbfs-D4h43Z/

and then it exits itself. Checking what's going on with that Trash:

adb shell ls -l -a -d '/.Trash'
ls: /.Trash: No such file or directory

I've checked output from ls, and on the failing device it looks like ls -C (3 columns). On another device (where it works), it's rather ls -1 like. Tried working around that by replacing ls (busybox-symlink) by a shell script (executing ls -1 when called without parameters) didn't help.

Above was done with a binary compiled from a fresh clone of today. Troublesome device is a Motorola Milestone 2 running CM 10 (Android 4.1.2), rooted. Works fine on an LG P880 (rooted) and a Samsung Galaxy Ace (not rooted), both with the same Android version (just stock ROM instead of CM).

spion commented 9 years ago

I think I managed to fix this issue by changing the way missing files are detected in the latest commit 978207fca9. Can you verify?

IzzySoft commented 9 years ago

Thanks a lot! But unfortunately, results are the same – though output changed:

--*-- exec_command: adb shell ls
--*-- exec_command: adb shell ls -l -a -d '/.Trash'
--*-- exec_command: adb shell ls -l -a -d '/.Trash-1000'

At the last line it now hangs for a few seconds (up to a minute – maybe even longer when no key pressed), then exits without an error message (but exit code "1"). Changing to the mountpoint still is not possible: "socket not bound".

I've checked the same with another device (LG P880 running stock 4.1.2). Same output, but it works. Doesn't exit even after a minute (as -f obviously stands for "keep running in foreground"), and I can access the mount-point fine.

PS: If it would help you, you could make a debug-branch with additional debug-output to track down the culprit. I could then use that to check, while "master" would stay "clean".

spion commented 9 years ago

Thats really strange :(

Regarding debugging its now possible to run CPPFLAGS=-g make then use addr2line -e ./adbfs and paste the address numbers from the backtrace (e.g. for ./adbfs[0x40267c] the number would be 0x40267c) to get the corresponding file and a line number... But that procedure assumes a backtrace is actually available.

No need to make a new branch - we could just use an environment-variable to enable detailed logging :)

IzzySoft commented 9 years ago

But that procedure assumes a backtrace is actually available.

Which currently is not the case. Can you tell me a little more about the environment variable? I'd then try something like VAR=val adbfs -f /mnt/here, and update the issue with (relevant) output. Just need to know what variable set to which value :smile_cat:

spion commented 9 years ago

Haven't done it yet :grinning:. Will post here after I make the necessary changes. Need to write a routine that logs things conditionally based on the env variable and sprinkle it across the codebase at useful places (not tonight though - perhaps tomorrow)

IzzySoft commented 9 years ago

Ah! OK, so it rather was a "prophetic hint" – and I was too fast :rocket: Thanks, looking forward to it!

IzzySoft commented 9 years ago

Happy new year first! I hope it's not considered impolite if I ask whether you were able to make any progress already? If you did not yet start on it, I might instead turn my "bumping" into a different suggestion:

For performance considerations, instead of using a runtime variable, maybe you'd prefer a compile-time switch – setup by something like make debug? So for troubleshooting, one could compile a debug version – while at the same time being able to compile a more performant version for production use by just omitting the debug parameter to make.

spion commented 9 years ago

Haven't done anything yet. Will try to make the time these couple of days. Performance should not be an issue - checking a flag is pretty quick.

IzzySoft commented 9 years ago

OK – then whatever is easier for you :smiley_cat:

IzzySoft commented 9 years ago

Just to let you know: If you had any solution in mind, I no longer can test it. Upgraded the device to CM 10.2 (Android 4.3), issue no longer exists for me. Feel free to close this issue – unless there are more reports on it :wink:

spion commented 9 years ago

Haven't made any progress on this, too busy at a new job. Will leave the issue open for a while more, just in case.

IzzySoft commented 9 years ago

Fine with me, but I wouldn't bother too much with it:

So as it currently looks like, the culprit is this specific device in combination with this specific ROM. Unlikely that many others use this combination, as there are (at least) two newer versions available: CM10.2 (which my device runs now), and CM11 (which I most likely will upgrade to, soon). Hence for the few ones who do, the solution would be simply to upgrade their ROM :stuck_out_tongue_winking_eye:

apollothethird commented 7 years ago

I know this is a long time since the original issue was reported. However, I'm having this issue with my new Samsung Galaxy S8. Using the -d debug option I get this output:

$ adbfs -d  ~/droid
--*-- exec_command: adb shell "ls"
FUSE library version: 2.9.4
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.23
flags=0x0003fffb
max_readahead=0x00020000
   INIT: 7.19
   flags=0x00000011
   max_readahead=0x00020000
   max_write=0x00020000
   max_background=0
   congestion_threshold=0
   unique: 1, success, outsize: 40
unique: 2, opcode: ACCESS (34), nodeid: 1, insize: 48, pid: 3510
access / 04
   unique: 2, success, outsize: 16
unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 3510
LOOKUP /.Trash
getattr /.Trash
--*-- exec_command: adb shell "ls -l -a -d '/.Trash'"
unique: 4, opcode: OPENDIR (27), nodeid: 1, insize: 48, pid: 3451
   unique: 4, success, outsize: 32
unique: 5, opcode: GETATTR (3), nodeid: 1, insize: 56, pid: 3451
getattr /
--*-- exec_command: adb shell "ls -l -a -d '/'"
ls: /.Trash: No such file or directory
   unique: 3, error: -11 (Resource temporarily unavailable), outsize: 16
unique: 6, opcode: LOOKUP (1), nodeid: 1, insize: 57, pid: 8738
LOOKUP /.xdg-volume-info
getattr /.xdg-volume-info
--*-- exec_command: adb shell "ls -l -a -d '/.xdg-volume-info'"
Error: signal 11:
adbfs[0x402d0f]
/lib/x86_64-linux-gnu/libc.so.6(+0x354b0)[0x7fea2db954b0]
/lib/x86_64-linux-gnu/libc.so.6(+0x3b454)[0x7fea2db9b454]
/lib/x86_64-linux-gnu/libc.so.6(atoi+0x10)[0x7fea2db96e90]
adbfs[0x40521d]
/lib/x86_64-linux-gnu/libfuse.so.2(+0xa96e)[0x7fea2e6e996e]
/lib/x86_64-linux-gnu/libfuse.so.2(+0x14ef5)[0x7fea2e6f3ef5]
/lib/x86_64-linux-gnu/libfuse.so.2(+0x15679)[0x7fea2e6f4679]
/lib/x86_64-linux-gnu/libfuse.so.2(+0x11e38)[0x7fea2e6f0e38]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7fea2df316ba]
--*-- exec_command: rm -rf /tmp/adbfs-U1RJOj/
$ ls: /.xdg-volume-info: No such file or directory

It has worked on my previous Smart phone and works fine on my Samsung Galaxy Tab A (Model # SM-T280).

I'll be glad to run any test.

-- L. James

-- L. D. James ljames@apollo3.com www.apollo3.com/~ljames

IzzySoft commented 7 years ago

@apollothethird it would help if you explicitly state what ROM and Android version you're using on that device (see my last comment above: seems to be bound to specific combinations only). Also, have you compiled from the latest code? I vaguely remember there was some change on how to deal with "non-existing files". In connection with this issue, see e.g. d198ddfe (yes, I know that's 2.5 years ago – but if you're still using a version compiled before that, this might be the culprit and a new compilation the solution).

apollothethird commented 7 years ago

Thanks, IzzSoft. Sorry for just seeing your message. I'll try to watch this thread closer so that I can be more prompt to answer any questions or test that you suggest.

I tried all the versions that I could find. I had started out with what I thought was the main version and updates, the one that's linked to this thread, I found it by clicking the spion/adbfs-rootless link above and downloading the zip file. I just clicked on the link in your current message and tried it from there and get the same response as in my comment above.

The version shows:

$ ./adbfs --version
--*-- exec_command: adb shell ls
FUSE library version: 2.9.4
fusermount version: 2.9.4
using FUSE kernel interface version 7.19
--*-- exec_command: rm -rf /tmp/adbfs-HgovVz/

My device is the Samsung Galaxy S8. Is this the rom information you are asking for:

$ adb -s $device exec-out getprop | egrep -i knox
[dev.knoxapp.running]: [false]
[net.knox.shareddevice.version]: [2.8.0]
[net.knoxscep.version]: [2.2.0]
[net.knoxvpn.version]: [2.4.0]
[ro.config.knox]: [v30]
[ro.knox.enhance.zygote.aslr]: [0]
[sys.knox.exists]: [0]
[sys.knox.store]: [0]

Let me know if there's any other information you need, or any test I can perform.

Thanks!

-- L. James

-- L. D. James ljames@apollo3.com www.apollo3.com/~ljames

IzzySoft commented 7 years ago

@apollothethird You again forgot to mention the Android version you're on. From the device you've named (Galaxy S8) I guess you're on Nougat or higher. In that case, see #14 – that's an issue still open and unsolved (though a patch exists that fixes it partly, i.e. read-only and only for Nougat and up – it breaks compatibility with MM and below). Your output looks similar to what I get on the S7 running Nougat – so I'd say it's rather related to the linked issue and not to this one here.

apollothethird commented 7 years ago

On 10/01/2017 04:35 PM, Izzy wrote:

@apollothethird https://github.com/apollothethird You again forgot to mention the Android version you're on. From the device you've named (Galaxy S8) I guess you're on Nougat or higher. In that case, see #14 https://github.com/spion/adbfs-rootless/issues/14 – that's an issue still open and unsolved (though a patch exists that fixes it /partly,/ i.e. read-only and only for Nougat and up – it breaks compatibility with MM and below). Your output looks similar to what I get on the S7 running Nougat – so I'd say it's rather related to the linked issue and not to this one here.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/spion/adbfs-rootless/issues/4#issuecomment-333404822, or mute the thread https://github.com/notifications/unsubscribe-auth/AToo26TV_eC9YtALRjfK9BgfEA0S0lwiks5sn_ecgaJpZM4DMC7l.

Thanks, Izzy.  The Android version is 7.0.  I'll try the linked case #14.

-- L. James

-- L. D. James ljames@apollo3.com www.apollo3.com/~ljames

123georgesteve commented 6 years ago

Received

123georgesteve commented 6 years ago

I haven't used this because I couldn't figure out how to. In the past year or so I have to jump into just exploring then actually using a properly.