本文介绍了如何解决W /艺术:尝试端口的Andr​​oid棒棒糖阿戴尔委员会无法创建镜像文件“/system/framework/boot.art”图像空间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

荫试图端口的Andr​​oid棒棒糖阿戴尔董事会和我就面临崩溃ART(AndroidRunTime)以下问题。

Iam trying to port Android Lollipop on arndale board and I am facing following issue regarding ART crash (AndroidRunTime).

> I/art ( 2264): RelocateImage: /system/bin/patchoat
> --input-image-location=/system/framework/boot.art --output-image-file=/data/dalvik-cach6 F/libc ( 2443): No [stack] line found in "/proc/self/task/2443/maps"! F/libc ( 2443): Fatal signal 6
> (SIGABRT), code -6 in tid 2443 (patchoat) W/art ( 2702): Could not
> create image space with image file >/system/framework/boot.art.
> Attempting to fall back to imageless running

步骤遵循移植

1.Download VEX preSS Android L移动32位$ C $从下面的链接℃。

2.Download阿戴尔的Andr​​oid KK 32位源与3.9内核从

2.Download arndale android KK 32 bit source with 3.9 kernel from http://releases.linaro.org/14.08/android/arndale

3.更换从code下载步骤1中的扰害preSS内核源代码与第二步下载阿戴尔KK 3.9内核源代码。

3.Replace the Vexpress kernel source from code download in step 1 with arndale KK 3.9 Kernel source downloaded from step2.

4.更换扰害preSS HAL(设备/ Linaro的/ VEX preSS)与阿戴尔HAL(设备/ Linaro的/阿戴尔)。

4.Replace Vexpress HAL (device/linaro/vexpress) with Arndale HAL (device/linaro/arndale).

5.Solve与仿生和构建环境轻微complilation的问题。

5.Solve minor complilation issues related to bionic and build environment.

闪烁的图像,我停留在Android徽标和内核崩溃在黑板上电后

After flashing the images and powering on the board I am stuck at android logo and kernel crashes

> >37.790000] Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0    Tainted: G        W     (3.9.1 #8) [   37.790000]
> CPU: 0    Tainted: G        W     (3.9.1 #8) PC is at
> __copy_to_user_std+0x4c/0x3a8 [   37.790000] PC is at __copy_to_user_std+0x4c/0x3a8 LR is at 0x6c000000
> >[   37.790000] LR is at 0x6c000000

和logcat中给出了

and logcat gives

> >I/art ( 2264): RelocateImage: /system/bin/patchoat --input-image-location=/system/framework/boot.art --output-image-file=/data/dalvik-cach6 F/libc ( 2443): No [stack] line found in "/proc/self/task/2443/maps"! F/libc ( 2443): Fatal signal 6
> (SIGABRT), code -6 in tid 2443 (patchoat) W/art ( 2702): Could not
> create image space with image file >/system/framework/boot.art.
> Attempting to fall back to imageless running.

精确故障点

1.ART从艺术/运行/ thread.cc调用线程:: InitStackHwm。

POINT OF EXACT FAILURE

1.ART calls Thread::InitStackHwm from art/runtime/thread.cc.

2,上面的调用触发仿生/的libc /仿生/ pthread_attr.cpp __pthread_attr_getstack_main_thread(stack_base处,STACK_SIZE),返回否[堆栈]行发现,在此处输入code的/ proc /自/任务/ 2443 /图!和ART崩溃给SIG_ABORT,它好像没有堆栈是越来越为2443线程创建的,但如何解决这个问题?

2.The above call triggers __pthread_attr_getstack_main_thread(stack_base, stack_size) in bionic/libc/bionic/pthread_attr.cpp which returns No [stack] line found in enter code here/proc/self/task/2443/maps! and ART crashes giving SIG_ABORT and it seems as if no stack is getting created for 2443 thread, but how to solve this?

这将是巨大的,如果有人能帮助我解决这个问题。

It would be great if anyone can help me to solve this issue.

谢谢,
Devarsh

Thanks,Devarsh

推荐答案

这是用3.9的内核与期待3.10的内核(其支持阿戴尔不可用)Linaro的VEX preSS android平台的副作用。

This is a side effect of using 3.9 kernel with linaro vexpress android platform which is expecting 3.10 kernel(whose support for arndale is not available).

作为一种变通方法注释掉艺术/运行/ thread.cc的InitStackHwm()函数。

As a workaround comment out the InitStackHwm() function in art/runtime/thread.cc.

我想,如果在需要3.10内核支持阿戴尔的我们未必需要这种解决方法和ART将努力通俗易懂。

I think if in 3.10 kernel support of arndale is needed we may not need this workaround and ART would work straightaway.

    void Thread::Init(ThreadList* thread_list, JavaVMExt* java_vm) {
  // This function does all the initialization that must be run by the native thread it applies to.
  // (When we create a new thread from managed code, we allocate the Thread* in Thread::Create so
  // we can handshake with the corresponding native thread when it's ready.) Check this native
  // thread hasn't been through here already...
  CHECK(Thread::Current() == nullptr);
  SetUpAlternateSignalStack();
  InitCpu();
  InitTlsEntryPoints();
  RemoveSuspendTrigger();
  InitCardTable();
  InitTid();
  // Set pthread_self_ ahead of pthread_setspecific, that makes Thread::Current function, this
  // avoids pthread_self_ ever being invalid when discovered from Thread::Current().
  tlsPtr_.pthread_self = pthread_self();
  CHECK(is_started_);
  CHECK_PTHREAD_CALL(pthread_setspecific, (Thread::pthread_key_self_, this), "attach self");
  DCHECK_EQ(Thread::Current(), this);

  tls32_.thin_lock_thread_id = thread_list->AllocThreadId(this);
  //InitStackHwm(); This is the workaround

  tlsPtr_.jni_env = new JNIEnvExt(this, java_vm);
  thread_list->Register(this);
}

这篇关于如何解决W /艺术:尝试端口的Andr​​oid棒棒糖阿戴尔委员会无法创建镜像文件“/system/framework/boot.art”图像空间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-10 08:42