Code Monkey home page Code Monkey logo

drammer's Introduction

Drammer

This software is the open-source component of our paper "Drammer: Deterministic Rowhammer Attacks on Mobile Devices", published in ACM Computer and Communications Security (CCS) 2016. It allows you to test whether an Android device is vulnerable to the Rowhammer bug. It does not allow you to root your device.

This code base contains our native, C/C++-based mobile Rowhammer test implementation.

Disclaimer

If, for some weird reason, you think running this code broke your device, you get to keep both pieces.

Android GUI app

If you don't want to build the test yourself, we also provide an Android app as a GUI for the native component that may or may not be currently available on the Google Play Store depending on the store's policy.

The app supports relaxed and aggressive hammering, which corresponds to the number of seconds to run 'defrag' (-d command line option described below): you can choose a timeout between 0 (no defrag) and 60 seconds, although higher timeouts likely cause the app to become unresponsive.

The app optionally collects basic statistics on the type of device and test results so that we can gain insights into the number and type of vulnerable devices in the wild, so please consider sharing them for science.

Native installation

To build the native binary, you need an Android NDK toolchain. I used android-ndk-r11c:

wget https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
unzip android-ndk-r11c-linux-x86_64.zip
cd android-ndk-r11c
./build/tools/make-standalone-toolchain.sh --ndk-dir=`pwd` \
  --arch=arm --platform=android-24 \
  --install-dir=./sysroot-arm/ \
  --verbose

You can then build the program setting STANDALONE_TOOLCHAIN variable to point to the toolchain:

STANDALONE_TOOLCHAIN=path/to/android-ndk-r11c/sysroot-arm/bin make

This gives you a stripped ARMv7 binary that you can run on both ARMv7 (32-bit) and ARMv8 (64-bit) devices. The Makefile provides an install feature that uses the Android Debug Bridge (adb) to push the binary to your device's /data/local/tmp/ directory. You can install adb by doing a sudo apt-get install android-tools-adb (on Ubuntu) or by installing the Android SDK via android.com. Then do a:

make install
make test

to install and start the Rowhammer test binary. Once installed, you may also invoke it from the shell directly:

adb shell
cd /data/local/tmp
./rh-test

Command line options

The native binary provides a number of command line options:

  • -a
    Do templating with all patterns. Without this option, only the patterns 010 and 101 are used, meaning that we hammer each row twice: once with it's aggressor rows containing all zeros while the victim row holds only ones, and once with the aggressor rows holding ones while the victim consists of zeros only. Enabling this option hammers each row with the following configurations: 000, 001, 010, 011, 100, 101, 110, 111, 00r, 0r0, 0rr, r00, r0r, rr0, rrr (where r is random and changed every 100 iterations).
  • -c
    Number of memory accesses per hammer round, defaults to 1000000. It is said that 2500000 yields the most flips.

  • -d
    Number of seconds to run 'defrag' (disabled by default). This tricks the system into freeing more ION memory that can be used for templating. Since Android tries to keep as many background processes in memory as possible, the amount of memory available for ION allocations may be very small (all of the memory is either in use, or cached in the operating system). By allocating many ION chunks, this option forces Android's low memory killer to kill background processes, giving us more (contiguous) memory to hammer in the templating phase.
    Use this option with caution: setting it too high likely hangs your device and trigger a reboot. My advice is to first try without -d (or with -d0), see how much memory you get, if not enough, hit CTRL^C, and restart with -d3. If this still does not give you enough memory, I usually repeat the sequence of breaking with CTRL^C and restarting with -d3 again in favor of using a higher timeout value. To answer the question of "how much is enough": on a Nexus 5, that comes with 2GB of memory, you should be able to get 400 to 600 MB of ION memory.

  • -f
    Write results not only to stdout but also to this file.

  • -h
    Dump the help screen.

  • -i
    Run an ION heap-type detector function.

  • -q
    Pin the program to this CPU. Some big.LITTLE architectures require you to pin the program to a big core, to make sure memory accesses are as fast as possible.

  • -r
    The rowsize in bytes. If this value is not provided, the program tries to find it using a timing side-channel (described in the paper) which may not always work. The most common value seems to be 65536 (64KB).

  • -s Hammer more conservatively. By default, we hammer each page, but this option moves less bytes (currently set to 64 bytes).

  • -t
    Stop hammering after this many seconds. The default behavior is to hammer all memory that we were able to allocate.

Description of source files

The native code base is written in C and abuses some C++ functionality. There are some comments in the source files that, combined with run-time output dumped on stdout, should give you an indication of what is happening. The main output of a run consists of numbers that indicate the average DRAM access time (in nanoseconds).

What follows is a short description of all source files.

  • Makefile
    Build system.

  • helper.h
    Inline helper functions defined in a header file.

  • ion.cc and ion.h
    Implements all ION related functionality: allocate, share, and free. By using a custom ION data data structure defined in ion.h, we also provide some functions on top of these core ION ionctls: bulk (bulk allocations), mmap, clean, and clean_all. It is required to call ION_init() before performing any ION related operations, as this function takes care of opening the /dev/ion file and reads /proc/cpuinfo to determine which ION heap to use. Note that the latter functionality is likely incomplete.

  • massage.cc and massage.h
    Implements exhaust (used for exhausting ION chunks: allocate until nothing is left) and defrag functions.

  • rh-test.cc
    Implements main() and is in charge of parsing the command line options and starting a template session.

  • rowsize.cc and rowsize.h
    Implements the auto detect function for finding the rowsize (described in more detail in the paper, Sections 5.1 and 8.1, and Figure 3)

  • templating.cc and templating.h
    Implements the actual Rowhammer test and builds template_t data structures (defined in templating.h, which might include some redundant fields). The is_exploitable() function checks whether a given template is in fact exploitable with Drammer. The main function is TMPL_run which loops over all hammerable ION chunks.

drammer's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

drammer's Issues

Samsung S3 Typewriter Error

I built drammer and I tried to run it on the Samsung S3, but I get a Not a typewriter error after trying to figure out the row size by allocating the ion memory chunk.

AOSP 4.4: XmlPullParserException: Binary XML file line #0: invalid drawable tag vector

When starting the GUI app:

06-30 09:40:21.827 1845-1845/org.iseclab.drammer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.iseclab.drammer, PID: 1845
    android.content.res.Resources$NotFoundException: File res/drawable/ic_info_outline.xml from drawable resource ID #0x7f060062
        at android.content.res.Resources.loadDrawable(Resources.java:2101)
        at android.content.res.Resources.getDrawable(Resources.java:700)
        at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
        at android.support.v7.widget.TintManager.getDrawable(TintManager.java:147)
        at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421)
        at android.support.v7.view.menu.ActionMenuItemView.initialize(ActionMenuItemView.java:114)
        at android.support.v7.widget.ActionMenuPresenter.bindItemView(ActionMenuPresenter.java:206)
        at android.support.v7.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:182)
        at android.support.v7.widget.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:192)
        at android.support.v7.widget.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:451)
        at android.support.v7.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1138)
        at android.support.v7.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91)
        at android.support.v7.widget.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:229)
        at android.support.v7.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:284)
        at android.support.v7.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:1030)
        at android.support.v7.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:1053)
        at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1315)
        at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1553)
        at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:89)
        at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:129)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #0: invalid drawable tag vector
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
        at android.content.res.Resources.loadDrawable(Resources.java:2097)
        at android.content.res.Resources.getDrawable(Resources.java:700) 
        at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323) 
        at android.support.v7.widget.TintManager.getDrawable(TintManager.java:147) 
        at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421) 
        at android.support.v7.view.menu.ActionMenuItemView.initialize(ActionMenuItemView.java:114) 
        at android.support.v7.widget.ActionMenuPresenter.bindItemView(ActionMenuPresenter.java:206) 
        at android.support.v7.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:182) 
        at android.support.v7.widget.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:192) 
        at android.support.v7.widget.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:451) 
        at android.support.v7.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1138) 
        at android.support.v7.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91) 
        at android.support.v7.widget.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:229) 
        at android.support.v7.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:284) 
        at android.support.v7.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:1030) 
        at android.support.v7.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:1053) 
        at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1315) 
        at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1553) 
        at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:89) 
        at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:129) 
        at android.os.Handler.handleCallback(Handler.java:733) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5017) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
        at dalvik.system.NativeStart.main(Native Method)

Drammer Crashes

Rooted using Towel Root.
Samsung Galaxy S5 Active (SM-G870A)
4.4.2 Kitkat (Locked bootloader)
SE Enforcing.
Instant app crash upon tapping.

Add to F-Droid ?

Hi,

I'd like to make a request to add Drammer to F-Droid (www.f-droid.org).
Do the authors of Drammer support this inclusion (they don't need to do anything else ; the addition will be made by the F-Droid team) ?

Acer Liquid Z330 - assertion failed

Drammer console output:

[MAIN] ION init
Detected chipset: Qualcomm
[MAIN] No or weird row size provided, trying auto detect
[RS] Trying getprop
[RS] ro.product.model: T01
[RS] ro.product.name: T01_ww
[RS] ro.product.board: MSM8909
[RS] ro.board.platform: msm8909
[RS] Allocating 256K ion chunk
[RS] Reading from page 0 and page x (x = 0..64)
179 178 178 178 178 178 178 178 266 178 178 179 178 178 184 180 266 178 178 179 179 178 179 178 266 178 178 179 178 178 179 178 267 178 178 184 180 178 179 178 266 178 178 179 178 178 179 178 266 179 178 179 178 178 179 178 270 180 178 178 179 178 178 178
[RS] Median: 178
[RS] MAD: 0
[RS] IQR: 1
[RS] Corrected IQR: 6
[RS] Sequences: 8 1 7 1 7 1 7 1 7 1 7 1 7 1
[RS] Detected row size: 32768
[MAIN] Row size: 32768
[MAIN] Exhaust ION chunks for templating
[EXHAUST] - order 10 (4096 KB) - got 0 chunks
[EXHAUST] - order 9 (2048 KB) - got 0 chunks
[EXHAUST] - order 8 (1024 KB) - got 19 chunks
[EXHAUST] - order 7 ( 512 KB) - got 77 chunks
[EXHAUST] - order 6 ( 256 KB) - got 222 chunks
[EXHAUST] - order 5 ( 128 KB) - got 469 chunks
[EXHAUST] allocated 175744 KB (171 MB)
[MAIN] Initializing patterns
[MAIN] Start templating
[TMPL] - Bytes allocated: 179961856 (171 MB)
[TMPL] - Time: 1477950871
[TMPL] - Start templating
helper.h:63: uintptr_t get_phys_addr(uintptr_t): assertion "value & (1ULL << 63)" failed
Aborted

Nexus 5 misunderstanding of the results (no flips)

Hello,

I have a LG Nexus 5 with Hammerhead on Android 6.0.1.
I think I am in you article situation but when I run your code it looks like there is nothing happening.
This is the command I'm trying with the corresponding result.

///// COMMAND
$> ./rh_test -a -c 2500000 -d3

///// RESULT
[EXHAUST] - order 10 (4096 KB) - got 0 chunks
[EXHAUST] - order 9 (2048 KB) - got 0 chunks
[EXHAUST] - order 8 (1024 KB) - got 0 chunks
[EXHAUST] - order 7 ( 512 KB) - got 0 chunks
[EXHAUST] - order 6 ( 256 KB) - got 0 chunks
[EXHAUST] - order 5 ( 128 KB) - got 0 chunks
[EXHAUST] - order 4 ( 64 KB) - got 0 chunks
[EXHAUST] allocated 0 KB (0 MB)
[DEFRAG] Additionally got 0 chunks of size 4096 KB (0 bytes in total = 0 MB)
Page block order: 10
Pages per block: 1024
Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10
Node 0, zone Normal, type Unmovable 57 46 13 1 1 1 0 1 0 2 1
Node 0, zone Normal, type Reclaimable 0 9 7 1 1 0 0 0 0 0 0
Node 0, zone Normal, type Movable 0 0 0 1 2 1 0 4 9 5 135
Node 0, zone Normal, type Reserve 0 0 0 0 0 0 0 0 0 0 1
Node 0, zone Normal, type CMA 0 0 1 0 0 0 1 0 1 1 3
Node 0, zone Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone HighMem, type Unmovable 41 35 13 3 0 0 0 0 0 0 0
Node 0, zone HighMem, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone HighMem, type Movable 553 44 2 0 0 0 0 0 0 0 0
Node 0, zone HighMem, type Reserve 54 17 3 1 0 0 0 0 0 0 0
Node 0, zone HighMem, type CMA 1364 3245 458 11 0 0 0 0 0 0 0
Node 0, zone HighMem, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Number of blocks type Unmovable Reclaimable Movable Reserve CMA Isolate
Node 0, zone Normal 31 3 151 1 4 0
Node 0, zone HighMem 36 0 170 1 76 0
[RS] Trying getprop
[RS] ro.product.model: Nexus 5
[RS] ro.product.name: hammerhead
[RS] ro.product.board: hammerhead
[RS] ro.board.platform: msm8974
[RS] known model: LG Nexus 5
[MAIN] Row size: 65536
[EXHAUST] - order 10 (4096 KB) - got 0 chunks
[EXHAUST] - order 9 (2048 KB) - got 0 chunks
[EXHAUST] - order 8 (1024 KB) - got 0 chunks
[EXHAUST] - order 7 ( 512 KB) - got 0 chunks
[EXHAUST] - order 6 ( 256 KB) - got 0 chunks
[EXHAUST] allocated 0 KB (0 MB)
[TMPL] - Bytes allocated: 0 (0 MB)
[TMPL] - Time: 1457894997
[TMPL] - Start templating
[TMPL] - bytes hammered: 0 (0 MB)
[TMPL] - median readtime: 0
[TMPL] - unique flips: 0 (1-to-0: 0 / 0-to-1: 0)
[TMPL] - exploitable flips: 0
[TMPL] - time spent: 0 seconds
/////

I really think I could have bit flips but nothing happen, I have the impression there is no memory allocated through the ION API and then no real hammering.

Am I missing something ?

Not work on Meizu m2 note.

[MAIN] ION init
Detected chipset: Mediatek
[MAIN] No or weird row size provided, trying auto detect
[RS] Trying getprop
[RS] ro.product.model: m2 note
[RS] ro.product.name: m2note
[RS] ro.product.board: m2note
[RS] ro.board.platform: mt6753
[RS] familiar model: HTC Desire 830
[RS] Allocating 256 ion chunk
[RS] Reading from page 0 and page x (x = 0..64)
251 246 276 280 289 292 294 293 274 274 278 282 277 277 278 278 277 277 342 342 297 294 291 291 278 277 274 275 279 278 280 279 291 290 293 293 341 342 279 278 277 278 278 278 312 276 277 277 293 293 290 290 280 278 342 342 280 279 277 278 278 278 275 274 
[RS] Median: 279
[RS] MAD: 3
[RS] IQR: 15
[RS] Corrected IQR: 20
count: 64
[RS] Sequences: 1 1 16 2 16 2 16 2 
[RS] Detected row size: 73728
[RS] WARNING! Weird row size detected, assuming familiar model's rowsize 65536
[MAIN] Row size: 65536
[MAIN] Exhaust ION chunks for templating
[EXHAUST] - order 10 (4096 KB) - got   0 chunks
[EXHAUST] - order  9 (2048 KB) - got 120 chunks
[EXHAUST] - order  8 (1024 KB) - got 140 chunks
[EXHAUST] - order  7 ( 512 KB) - got 142 chunks
[EXHAUST] - order  6 ( 256 KB) - got 143 chunks
[EXHAUST] allocated 498432 KB (486 MB)
[MAIN] Initializing patterns
[MAIN] Start templating
[TMPL] - Bytes allocated: 510394368 (486 MB)
[TMPL] - Time: 1479215190
[TMPL] - Start templating
[TMPL - status] flips: 0 | expl: 0 | hammered: 0 | runtime: 0 | median: 0 | kb_per_flip:  0.00 | perc_expl:  0.00 | special: 0 | 0-to-1: 0 | 1-to-0: 0
[TMPL - hammer] virtual row 63233: 0xf7010000 | physical row 22183: 0x56a79000
[TMPL - deltas] virtual row 63233: |141|141| |142|143| |138|138| |138|138| |141|142| |141|141| |139|138| |138|139| |145|145| |145|145| |144|144| |144|144| |145|149| |145|144| |144|143| |144|143| 
[TMPL - status] flips: 0 | expl: 0 | hammered: 65536 | runtime: 10 | median: 143 | kb_per_flip:  0.00 | perc_expl:  0.00 | special: 0 | 0-to-1: 0 | 1-to-0: 0
[TMPL - hammer] virtual row 63234: 0xf7020000 | physical row 22183: 0x56a79000

After 12 hours hammering no results.

get_phys_addr not work correctly in helper.h

on my android 5.0 , APQ8084 chip (SAMSUNG N9150), all pages have the same physical address in a 4MB chunk, why?
[FLIP] i:0xb6800000 l:4194304 v:0xb68621b4 p:0xbf0541b4 b: 8628 0x00000000 != 0x00000001 s:1478153785
[FLIP] i:0xb6800000 l:4194304 v:0xb68620ed p:0xbf0540ed b: 8429 0xffffffff != 0xfffffbff s:1478153785
[FLIP] i:0xb6800000 l:4194304 v:0xb6862a21 p:0xbf054a21 b:10785 0xffffffff != 0xfffffbff s:1478153785
[FLIP] i:0xb6800000 l:4194304 v:0xb68618c7 p:0xbf0548c7 b: 6343 0xffffffff != 0xefffffff s:1478153786
[FLIP] i:0xb6800000 l:4194304 v:0xb6862866 p:0xbf054866 b:10342 0xffffffff != 0xffefffff s:1478153786!
[FLIP] i:0xb6800000 l:4194304 v:0xb68678f7 p:0xbf0548f7 b:30967 0x00000000 != 0x80000000 s:1478153787
[FLIP] i:0xb6800000 l:4194304 v:0xb686611c p:0xbf05411c b:24860 0xffffffff != 0xffffffbf s:1478153787
[FLIP] i:0xb6800000 l:4194304 v:0xb686902e p:0xbf05402e b:36910 0x00000000 != 0x00040000 s:1478153789
[FLIP] i:0xb6800000 l:4194304 v:0xb6869140 p:0xbf054140 b:37184 0x00000000 != 0x00000080 s:1478153789
[FLIP] i:0xb6800000 l:4194304 v:0xb686aa55 p:0xbf054a55 b:43605 0x00000000 != 0x00001000 s:1478153789
[FLIP] i:0xb6800000 l:4194304 v:0xb6868946 p:0xbf054946 b:35142 0xffffffff != 0xffdfffff s:1478153789!
[FLIP] i:0xb6800000 l:4194304 v:0xb686e96f p:0xbf05496f b:59759 0xffffffff != 0x7fffffff s:1478153791
[FLIP] i:0xb6800000 l:4194304 v:0xb687189c p:0xbf05489c b:71836 0xffffffff != 0xffffffef s:1478153793
[FLIP] i:0xb6800000 l:4194304 v:0xb6871258 p:0xbf054258 b:70232 0xffffffff != 0xfffffff7 s:1478153794
[FLIP] i:0xb6800000 l:4194304 v:0xb687220b p:0xbf05420b b:74251 0xffffffff != 0xfeffffff s:1478153794
[FLIP] i:0xb6800000 l:4194304 v:0xb68772b7 p:0xbf0542b7 b:94903 0xffffffff != 0xfdffffff s:1478153796
[FLIP] i:0xb6800000 l:4194304 v:0xb687b111 p:0xbf054111 b:110865 0x00000000 != 0x00004000 s:1478153797
[FLIP] i:0xb6800000 l:4194304 v:0xb687c877 p:0xbf054877 b:116855 0xffffffff != 0xfbffffff s:1478153800
[FLIP] i:0xb6800000 l:4194304 v:0xb687c8ee p:0xbf0548ee b:116974 0xffffffff != 0xffbfffff s:1478153800
[FLIP] i:0xb6800000 l:4194304 v:0xb687e3fe p:0xbf0543fe b:123902 0xffffffff != 0xff7fffff s:1478153800

Don't run make test

An error occurs when running make test: Could not allocate 256K chunk for row size detection: Out of memory
[MAIN] ION init Detected chipset: Qualcomm [MAIN] No or weird row size provided, trying auto detect [RS] Trying getprop [RS] ro.product.model: SM-G900F [RS] ro.product.name: kltexx [RS] ro.product.board: MSM8974 [RS] ro.board.platform: msm8974 [RS] familiar model: LG Nexus 5 [RS] Allocating 256 ion chunk Could not allocate 256K chunk for row size detection: Out of memory
Device Samsubg Galaxy S5

Hanging OnePlus 5, 8GB RAM

Cannot get the full log, since it hangs immediately, even when setting the "Relaxed" parameter to as low as possible. The phone needs a hard reboot, system completely frozen.

image

LIcense

This is a very nice piece. Unfortunately, the repo is missing a license so it's unclear how one can use this software, if at all.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.