Status Update
Comments
vs...@google.com <vs...@google.com>
rk...@google.com <rk...@google.com>
wd...@google.com <wd...@google.com>
ru...@gmail.com <ru...@gmail.com> #2
This bug should go to the emulator team. However, I do not have permission to file bug against them yet.
ru...@gmail.com <ru...@gmail.com> #3
Thank you for reporting this. I think we have a bad race condition in RecurrentTask
. When a callback fires, the QEMUTimer
is empty (see cb(opaque)
is unlock):
/* remove timer from the list before calling the callback */
timer_list->active_timers = ts->next;
ts->next = NULL;
ts->expire_time = -1;
cb = ts->cb;
opaque = ts->opaque;
/* run the callback (the timer list can be modified) */
qemu_mutex_unlock(&timer_list->active_timers_lock);
cb(opaque);
qemu_mutex_lock(&timer_list->active_timers_lock);
and timer_del_locked
simply removes the QEMUTimer
instance from the active_timers
list. I am not sure how to avoid race conditions here. Consider this:
1: void myCallback(void* arg) {
2:
3: someCall();
4:
5: }
- The control enters into
myCallback
and the thread is preempted before the function had a chance making any side effect (line2
here). ËœRecurrentTask
is called on a separate thread.- Since
myCallback
did not write anywhere that it is busyËœRecurrentTask
proceeds destroying the statemyCallback
is about to access. myCallback
wakes and proceeds accessing already destroyed data.
Either I am missing something or this API is incomplete.
ru...@gmail.com <ru...@gmail.com> #4
ru...@gmail.com <ru...@gmail.com> #5
Just a note - we recompiled 33.1.24 by simply taking out the ifdefs in IpAddress::toString()
and by turning on gfxstream and got no linker issues (according to the comment that was why the ifdef guards were there in the first place) and proxy seems to work.
ru...@gmail.com <ru...@gmail.com> #6
If there is no progress on this can anyone from the google team advise how to properly build with gfxstream on? What we did was take 33.1.24 and remove the ifdef in the snipper above and then turn on the gfxstream cmake option, but it seems that that causes a weird build - we get ""Your GPU drivers may have a bug" which as far as i can see should not be there since the getGpuInfoListNative
method in hardware/google/gfxstream/gl-host-common/opengl/NativeGpuInfo_linux.cpp
doesn't even scan for gpus? So we are clearly somehow building it wrong, any advice would be appreciated as long as we cannot use the stock emulator with the proxy feature working.
al...@gmail.com <al...@gmail.com> #7
kc...@gmail.com <kc...@gmail.com> #8
Hello, this is impacting us greatly. Please fix this asap. Thank you.
wd...@google.com <wd...@google.com> #9
ru...@gmail.com <ru...@gmail.com> #10
Since the review link is not public, could you confirm that removing the ifdef is a legitimate fix (and the random rare crashes we we are seeing with removing the ifdef and building with gfxstream is something else) or are there other changes that need to be done?
wd...@google.com <wd...@google.com> #11
RE#10 Thank you for pointing that out. Removing the ifdef is a legitmate fix. The random crash is interesting but I doubt it has to with removing ifdef. Previously the ifdef guard was there probably because we used to have migw windows target but I don't think it's there anymore.
My fix is landed in
bo...@google.com <bo...@google.com> #12
bo...@google.com <bo...@google.com> #13
we need a new release for 34.1.x
Description
DESCRIBE THE ISSUE IN DETAIL: The
-http-proxy
command line parameter is not parsed correctly no matter what format I use - it uses an empty string as a hostname/ip and fails to connect. The port is parsed correctly. Formats I tried:STEPS TO REPRODUCE:
emulator.exe -avd Pixel_3a_API_34_extension_level_7_x86_64 -http-proxy 127.0.0.1:8888 -verbose -debug-proxy
Note: I tried to create the issue in "Android Studio > Emulator" component but got "You do not have permission to create issues in this component."