Passing futures to Arrays on different PE's doesn't work

I'm facing an issue with passing future objects to Arrays.
Let's consider the following example. Two USB cameras, one Stream wrapper, one data processor
  from charm4py import charm, Chare, Array, Reducer, Future, coro

  # Camera Class
  class Camera(Chare):
      def read(self, f):
          data = "image"
          self.reduce(f, data, Reducer.gather)

  # Wrapper for multiple cameras
  class Stream(Chare):
      def __init__(self):
          self.worker = Array(Camera, 2)

      @coro
      def get_images(self, f):
          self.worker.read(f)

  # Do some processing on images
  class Processor(Chare):
      @coro
      def process(self, future):
          images = future.get()
          result = "processing_result"
          return result

  def main(args):
      stream = Chare(Stream, onPE=-1)
      processor = Chare(Processor, onPE=-1)

      while True:
          f1 = Future()
          stream.get_images(f1)
          result = processor.process(f1, awaitable=True).get()

  charm.start(main)

If stream and processor get initialized as straight Chare's, everything run's fine
But if one of them get's initialized as an Array, like so: processor = Array(Processor, 1, args=[stream])
it stops working. I get following error message:
------------- Processor 0 Exiting: Called CmiAbort ------------ Reason: AttributeError: 'Future' object has no attribute 'gotvalues'
Is this behavior normal/expected?
And for some reason, this code is utilizing all 8 cores at 100%... Am I doing something wrong?
Ubuntu 16.04 Virtual Machine
Python: 3.6.12
Charm4Py: 1.0

Oh wait...it seems that it's not possible to pass futures between processes running on different PE's.
This breaks too, but why?
  from charm4py import charm, Chare, Array, Reducer, Future, coro

  # Camera Class
  class Camera(Chare):
      def read(self, f):
          data = "image"
          self.reduce(f, data, Reducer.gather)

  # Wrapper for multiple cameras
  class Stream(Chare):
      def __init__(self):
          self.worker = Array(Camera, 2)

      @coro
      def get_images(self, f):
          self.worker.read(f)

  # Do some processing on images
  class Processor(Chare):
      def __init__(self, stream):
          self.stream = stream

      @coro
      def process(self, future):
          images = future.get()
          result = "processing_result"
          return result

  def main(args):
      stream = Chare(Stream, onPE=0)
      processor = Chare(Processor, args=[stream], onPE=1)

      while True:
          f1 = Future()
          stream.get_images(f1)
          result = processor.process(f1, awaitable=True).get()

  charm.start(main)

Oh wait...it seems that it's not possible to pass futures between processes running on different PE's.
This breaks too, but why?
  from charm4py import charm, Chare, Array, Reducer, Future, coro

  # Camera Class
  class Camera(Chare):
      def read(self, f):
          data = "image"
          self.reduce(f, data, Reducer.gather)

  # Wrapper for multiple cameras
  class Stream(Chare):
      def __init__(self):
          self.worker = Array(Camera, 2)

      @coro
      def get_images(self, f):
          self.worker.read(f)

  # Do some processing on images
  class Processor(Chare):
      def __init__(self, stream):
          self.stream = stream

      @coro
      def process(self, future):
          images = future.get()
          result = "processing_result"
          return result

  def main(args):
      stream = Chare(Stream, onPE=0)
      processor = Chare(Processor, args=[stream], onPE=1)

      while True:
          f1 = Future()
          stream.get_images(f1)
          result = processor.process(f1, awaitable=True).get()

  charm.start(main)

This looks like an undocumented nuance with the way futures are currently implemented. Currently, futures are "owned" by the PE on which they are created, and there is no way to transfer ownership. A Future's result has to be retrieved on the same PE on which it was created. This will be added to the documentation. One way to fix this is to provide a different callback to stream.get_images.
from charm4py import charm, Chare, Array, Reducer, Future, coro

# Camera Class
class Camera(Chare):
    def read(self, f):
        data = "image"
        self.reduce(f, data, Reducer.gather)

# Wrapper for multiple cameras
class Stream(Chare):
    def __init__(self):
        self.worker = Array(Camera, 2)

    @coro
    def get_images(self, cb):
        self.worker.read(cb)

# Do some processing on images
class Processor(Chare):
    def __init__(self, result_future):
        self.result_future = result_future

    @coro
    def process(self, data):
        print(data)
        result = "processing_result"
        self.result_future(result)

def main(args):
    f1 = Future()

    stream = Chare(Stream)
    processor = Chare(Processor, args=[f1])

    stream.get_images(processor.process)
    print(f1.get())
    charm.exit()

charm.start(main)

An additional complexity arises from a Charm++ restriction that Arrays can only be created from PE 0. This can be solved simply by stream = Chare(Stream, onPE=0) to ensure that the stream chare is placed on PE 0. If this is not desirable, an alternative can be used:
from charm4py import charm, Chare, Array, Reducer, Future, coro

# Camera Class
class Camera(Chare):
    def read(self, f):
        data = "image"
        self.reduce(f, data, Reducer.gather)

# Wrapper for multiple cameras
class Stream(Chare):
    @coro
    def __init__(self):
        # self.worker = Array(Camera, 2)
        self.worker = None
        self.creation_future = charm.thisProxy[0].createArray(Camera, 2, ret=True)

    @coro
    def get_images(self, cb):
        self.worker = self.creation_future.get()
        self.worker.read(cb)

# Do some processing on images
class Processor(Chare):
    def __init__(self, result_future):
        self.result_future = result_future

    @coro
    def process(self, data):
        print(data)
        result = "processing_result"
        self.result_future(result)

def main(args):
    f1 = Future()

    stream = Chare(Stream, onPE=1)
    processor = Chare(Processor, args=[f1])

    stream.get_images(processor.process)
    print(f1.get())
    charm.exit()

charm.start(main)

Is this compatible with your use case? I will that the second example currently does not work due to a bug in Charm4Py. I am currently testing the fix and merge it later today. Once it has been merged I will notify you.

This looks like an undocumented nuance with the way futures are currently implemented. Currently, futures are "owned" by the PE on which they are created, and there is no way to transfer ownership. A Future's result has to be retrieved on the same PE on which it was created. This will be added to the documentation. One way to fix this is to provide a different callback to stream.get_images.
from charm4py import charm, Chare, Array, Reducer, Future, coro

# Camera Class
class Camera(Chare):
    def read(self, f):
        data = "image"
        self.reduce(f, data, Reducer.gather)

# Wrapper for multiple cameras
class Stream(Chare):
    def __init__(self):
        self.worker = Array(Camera, 2)

    @coro
    def get_images(self, cb):
        self.worker.read(cb)

# Do some processing on images
class Processor(Chare):
    def __init__(self, result_future):
        self.result_future = result_future

    @coro
    def process(self, data):
        print(data)
        result = "processing_result"
        self.result_future(result)

def main(args):
    f1 = Future()

    stream = Chare(Stream)
    processor = Chare(Processor, args=[f1])

    stream.get_images(processor.process)
    print(f1.get())
    charm.exit()

charm.start(main)

An additional complexity arises from a Charm++ restriction that Arrays can only be created from PE 0. This can be solved simply by stream = Chare(Stream, onPE=0) to ensure that the stream chare is placed on PE 0. If this is not desirable, an alternative can be used:
from charm4py import charm, Chare, Array, Reducer, Future, coro

# Camera Class
class Camera(Chare):
    def read(self, f):
        data = "image"
        self.reduce(f, data, Reducer.gather)

# Wrapper for multiple cameras
class Stream(Chare):
    @coro
    def __init__(self):
        # self.worker = Array(Camera, 2)
        self.worker = None
        self.creation_future = charm.thisProxy[0].createArray(Camera, 2, ret=True)

    @coro
    def get_images(self, cb):
        self.worker = self.creation_future.get()
        self.worker.read(cb)

# Do some processing on images
class Processor(Chare):
    def __init__(self, result_future):
        self.result_future = result_future

    @coro
    def process(self, data):
        print(data)
        result = "processing_result"
        self.result_future(result)

def main(args):
    f1 = Future()

    stream = Chare(Stream, onPE=1)
    processor = Chare(Processor, args=[f1])

    stream.get_images(processor.process)
    print(f1.get())
    charm.exit()

charm.start(main)

Is this compatible with your use case? I will that the second example currently does not work due to a bug in Charm4Py. I am currently testing the fix and merge it later today. Once it has been merged I will notify you.

This looks like an undocumented nuance with the way futures are currently implemented. Currently, futures are "owned" by the PE on which they are created, and there is no way to transfer ownership. A Future's result has to be retrieved on the same PE on which it was created.

Ahh, ok. Thank you very much! So this is kinda expected, no wonder it didn't work ^^

Is this compatible with your use case? I will that the second example currently does not work due to a bug in Charm4Py. I am currently testing the fix and merge it later today. Once it has been merged I will notify you.

Thanks, I will wait for the new merge!
It's not fully compatible with my use case. The code I provided, is the most basic and stripped down version to reproduce this "issue". My use case is quite a bite more complex. I need to run this infinitely and with multiple instances. But nonetheless, your modified example helps a lot, thank you!
My Use Case:
5 Stream instances with 3 cameras each. So I have 15 cameras, grouped into 5 Stream Wrappers.
Each stream wrapper instance, needs to take synchronized pictures from all of it's 3 cameras at the same time and then pass it's images through several different processing steps.
This means I have 5 pipelines that need to run in parallel but async/independent from another.
I will try to find a way to accomplish this. I think your modified example will help me to figure this out. Or maybe Charm4Py isn't the right tool for this kind of task?

This looks like an undocumented nuance with the way futures are currently implemented. Currently, futures are "owned" by the PE on which they are created, and there is no way to transfer ownership. A Future's result has to be retrieved on the same PE on which it was created.

Ahh, ok. Thank you very much! So this is kinda expected, no wonder it didn't work ^^

Is this compatible with your use case? I will that the second example currently does not work due to a bug in Charm4Py. I am currently testing the fix and merge it later today. Once it has been merged I will notify you.

Thanks, I will wait for the new merge!
It's not fully compatible with my use case. The code I provided, is the most basic and stripped down version to reproduce this "issue". My use case is quite a bite more complex. I need to run this infinitely and with multiple instances. But nonetheless, your modified example helps a lot, thank you!
My Use Case:
5 Stream instances with 3 cameras each. So I have 15 cameras, grouped into 5 Stream Wrappers.
Each stream wrapper instance, needs to take synchronized pictures from all of it's 3 cameras at the same time and then pass it's images through several different processing steps.
This means I have 5 pipelines that need to run in parallel but async/independent from another.
I will try to find a way to accomplish this. I think your modified example will help me to figure this out. Or maybe Charm4Py isn't the right tool for this kind of task?

This task looks well-suited to Charm4py. How synchronized should these pictures be? Are there phases in the computation where picture-taking and processing happen independently, or are they to be interleaved? Some issues may arise depending on the characteristics of the code.

This task looks well-suited to Charm4py. How synchronized should these pictures be? Are there phases in the computation where picture-taking and processing happen independently, or are they to be interleaved? Some issues may arise depending on the characteristics of the code.

One possibility is to create a Controller chare that can handle the operations for each client. Then you can do something like:
class ClientMap(ArrayMap):
    def procNum(self, index):
        return 0
...
myMap = Group(ClientMap)
controller = Array(Controller, args=[num_clients, num_cameras_per_client], map=myMap)
controller.run_forever()

I have used the ArrayMap to ensure the chares in the array are placed on PE 0 so they may create other chare arrays without issue. Alternatively you can checkout and build from the bug-future_different_coro branch, which fixes the bug this issue uncovered and is under review, and use the createArray method in the way outlined above. Here I have assumed the Controller constructor will create the stream, tracker, diff, and processor chares for each client. The function run_forever would contain the while loop.
One possibility is that the processing chares from client n are on the same PE as the camera chares from client n+, and that may create delays between pictures if the processing of one client happens between picture taking of another. One solution to this is to use an ArrayMap and the onPE argument to ensure that all of a client's chares are on the same processor, ensuring we do not see the interference described above. You could do it at a finer grain by assigning the camera chares of one or more clients to a PE and allowing the processing of the images to happen on the other processors. You can decide stylistically or empirically which will be better.

One possibility is to create a Controller chare that can handle the operations for each client. Then you can do something like:
class ClientMap(ArrayMap):
    def procNum(self, index):
        return 0
...
myMap = Group(ClientMap)
controller = Array(Controller, args=[num_clients, num_cameras_per_client], map=myMap)
controller.run_forever()

I have used the ArrayMap to ensure the chares in the array are placed on PE 0 so they may create other chare arrays without issue. Alternatively you can checkout and build from the bug-future_different_coro branch, which fixes the bug this issue uncovered and is under review, and use the createArray method in the way outlined above. Here I have assumed the Controller constructor will create the stream, tracker, diff, and processor chares for each client. The function run_forever would contain the while loop.
One possibility is that the processing chares from client n are on the same PE as the camera chares from client n+, and that may create delays between pictures if the processing of one client happens between picture taking of another. One solution to this is to use an ArrayMap and the onPE argument to ensure that all of a client's chares are on the same processor, ensuring we do not see the interference described above. You could do it at a finer grain by assigning the camera chares of one or more clients to a PE and allowing the processing of the images to happen on the other processors. You can decide stylistically or empirically which will be better.

I will try out your suggestions tomorrow, I think this will solve my problems.
Thank you very much! You are awesome! :1st_place_medal:

I will try out your suggestions tomorrow, I think this will solve my problems.
Thank you very much! You are awesome! :1st_place_medal:

It works! Now I'm able to run as many clients with as many cameras as I want. It's exactly how I wanted it to be.
You made my day! :)

It works! Now I'm able to run as many clients with as many cameras as I want. It's exactly how I wanted it to be.
You made my day! :)


Why not unzip models.zip?

Because you're distributing data that needs to be unzipped, usage of RAScore can not be directly automated. One solution I had considered would be to load the models directly out of the zip folder with:
# RAscore/model/models/__init__.py

import os
from zipfile import ZipFile
from tensorflow import keras

HERE = os.path.abspath(os.path.dirname(__file__))
MODELS = os.path.join(HERE, 'models.zip')

def load_dnn_chembl():
    with ZipFile(MODELS) as zip_file:
        with zip_file.open('models/DNN_chembl_fcfp_counts/model.h5') as file:
            return keras.models.load_model(file)

This fails because keras refuses to load models from file-like objects - it only wants to have file paths.
I tried the following which unzips the model file in a temporary directory only during loading, but it fails because of #3.
# RAscore/model/models/__init__.py

import os
import tempfile
from zipfile import ZipFile
from tensorflow import keras

HERE = os.path.abspath(os.path.dirname(__file__))
MODELS = os.path.join(HERE, 'models.zip')

def load_dnn_chembl():
    with ZipFile(MODELS) as zip_file, tempfile.TemporaryDirectory() as tmp:
        zip_file.extract('models/DNN_chembl_fcfp_counts/model.h5', tmp)
        return keras.models.load_model(tmp)

Other alternates:

The models.zip folder is currently under GitHub's limit for file size. Unzip it and distribute it with the package itself. Then you can use install_package_data=True in the setup.py so it gets installed together and you can use the same trick I did in these examples to create consistent file paths that could be the default models for the predictor classes. This solution might be problematic for a PyPI upload since they do have a limit on size, but I'm not sure what it is.
Host the models (unzipped) on a repository like FigShare or Zenodo, then use a tool like pystow to automatically cache them for users in a consistent location that can be considered as the "default". Most people will only use your default model, so while extensibility to loading any model is nice, it's making a higher bar for new users.

All of these solutions are moot while #3 persists, but after that's fixed I'd be happy to submit demonstrating solution 1. If you'd like a demonstration of solution 2, please upload these files to a record on Zenodo and I can give a demo of that too.

Unfortunately I am struggling to reproduce the error, however it could help if rather than specifying the paths, i do as you have suggested and load them by default. This could mitigate some issues. I am looking into it and would be happy if you could see if it helps overcome the model loading problem.
Is there an issue loading the XGB model aswell?

Default models are unzipped and loaded automatically in a similar way to the suggestion. The file paths no longer need to be specified for the default models and the usage is now documented in the readme, as well as a jupyter notebook.

Great, this is exactly the kind of solution I was hoping for


Illegal Access Warning

Hi,
thank you much for this great extension, i got this warning, what to do about that?
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.bol.util.JCEPolicy (file:/~/.m2/repository/com/bol/spring-data-mongodb-encrypt/2.2/spring-data-mongodb-encrypt-2.2.jar) to field javax.crypto.JceSecurity.isRestricted
WARNING: Please consider reporting this to the maintainers of com.bol.util.JCEPolicy
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

I am using Spring Boot with version: v2.1.2.RELEASE

Hey,
Also using this nice library,
It's because of https://github.com/bolcom/spring-data-mongodb-encrypt/blob/a9d5ee0dfc5d84dda0dac99a8922982de739b647/src/main/java/com/bol/util/JCEPolicy.java#L32
As stated in the javadoc, https://github.com/bolcom/spring-data-mongodb-encrypt/blob/a9d5ee0dfc5d84dda0dac99a8922982de739b647/src/main/java/com/bol/util/JCEPolicy.java#L13, the hack is not required anymore... starting from specific JDK builds!
I guess the lib wants to be compatible with versions prior to the fix.
A good enough fix to avoid such error message (which is even bigger with a stacktrace using Java 12), would be to check the java runtime version before performing the hack... which would be kinda cumbersome though.
Otherwise, get rid of the hack and bump the version of the lib...
Food for thoughts.

Correct, java 8u152 enabled strong encryptions in JCEPolicy, so this hack is no longer needed, that's exactly why it's enclosed in a try-catch.
I haven't tried this lib on java above java8 yet, so I suppose you can encounter weird behavior and warnings. I'll keep this issue open and do some testing on java11-12 when I have the time (or anyone else is also welcome!)

Well tested your lib with openjdk11 and at the moment there are no major issues.

Thank you. I am considering adding a java version check and only do the JCEPolicy hack on java <= 8u152, as this hack is bound to produce JVM warnings and errors.

Hello! Is this warn still open?
I have a exception:
15-10-2019 15:18:54 [main] INFO  com.bol.crypt.CryptVault - Exception caught while trying to open JCE via reflection java.lang.NoSuchFieldException: modifiers
And i think that is the same. I am using the JDK version 1.8
Thank you!

Yes, I'm planning to add a java version check before this one, but it's relatively low priority as this is merely cosmetic - apart from that log line, everything works as normal.

ok ok, i will try to solve, if i have time!

Fixed in 2.3.1.

Thank you!

Hello! Is this warn still open?
I have a exception:
15-10-2019 15:18:54 [main] INFO com.bol.crypt.CryptVault - Exception caught while trying to open JCE via reflection java.lang.NoSuchFieldException: modifiers
And i think that is the same. I am using the JDK version 1.8
Thank you!

I am facing the same issue as you, while migrating to JDK15 . The current spring-data-mongodb-encrypt version in my application is 1.3.0. could you please let me know how you resolved this issue

It is not an issue. For older versions of java8, the encryption API was not fully open out of the box, and a hack needed to be applied. This error message simply states this hack didn't work. spring-data-mongodb-encrypt would continue to work on a non-outdated JDK/JVM without issues, since this hack is not needed there.
As in, you can safely ignore this warning.


Authentication Policy examples fail when turning on mTLS

Describe the bug
Step from https://istio.io/docs/tasks/security/authn-policy/ fail when turning on mTLS.
for from in "foo" "bar"; do for to in "foo" "bar"; do kubectl exec $(kubectl get pod -l app=sleep -n ${from} -o jsonpath={.items..metadata.name}) -c sleep -n ${from} -- curl http://httpbin.${to}:8000/ip -s -o /dev/null -w "sleep.${from} to httpbin.${to}: %{http_code}\n"; done; done
sleep.foo to httpbin.foo: 000
command terminated with exit code 52
sleep.foo to httpbin.bar: 000
command terminated with exit code 52
sleep.bar to httpbin.foo: 000
command terminated with exit code 52
sleep.bar to httpbin.bar: 000
command terminated with exit code 52
With tshark it's verified, that packets arrive to pod network namespace (unencrypted, GET /ip is visible in capture), but istio-proxy logs nothing.
Once DestinationRule is applied:
for from in "foo" "bar"; do for to in "foo" "bar"; do kubectl exec $(kubectl get pod -l app=sleep -n ${from} -o jsonpath={.items..metadata.name}) -c sleep -n ${from} -- curl http://httpbin.${to}:8000/ip -s -o /dev/null -w "sleep.${from} to httpbin.${to}: %{http_code}\n"; done; done
sleep.foo to httpbin.foo: 000
command terminated with exit code 56
sleep.foo to httpbin.bar: 000
command terminated with exit code 56
sleep.bar to httpbin.foo: 000
command terminated with exit code 56
sleep.bar to httpbin.bar: 000
command terminated with exit code 56
In this case GET /ip is not visible in capture, but packets contain readable strings (ie: k8s.cluster.local).
TCP session is established in both cases.
Expected behavior
Once mTLS is turned on on mesh level the mentioned tests should result in 503 response code and once DestinationRule is added all should work again.
Steps to reproduce the bug
Follow steps on official doc page:
https://istio.io/docs/tasks/security/authn-policy/
Version
Kubernetes:
Client Version: "v1.11.2"
Server Version: "v1.11.0"
Istio: 1.0.2
Installation
As per https://istio.io/docs/setup/kubernetes/helm-install/ Option 2 (Helm + Tiller) with explicit global.mtls.enabled=false
Environment
private kubernetes installation (no external loadbalancer).
Cluster state
{{ If you're running on Kubernetes, consider following the
instructions
to generate "istio-dump.tar.gz", then attach it here by dragging and dropping
the file onto this issue. }}

Some additional info:

same example works fine on GKE (kubernetes version: 1.10.7)
with Istio 1.0.1 the example fails the same way
before mTLS is turned on, the mesh seems to work fine, requests result in 200 OK response code as expected


Not supported on IE browser and shows blank page

I have used the Iframe component from React/iframe. Please resolve this issue;

@krishgopal24
Which windows OS and IE version?
I was able to use Iframe component without trouble on IE11, both windows 7 and 10

Same here when trying to render an Iframe containing a PDF (PDF file is downloaded instead of beeing shown)

IE is deprecated, so no fix coming 😈


Remove nyc dependency

@ANNPATIL can you please send a PR for this?
https://github.com/nodeshift-starters/nodejs-rest-http-crud/blob/opentel/package.json#L33

Pr merged https://github.com/nodeshift-starters/nodejs-rest-http-crud/pull/324


[Bug Report] 全屏状态不部分组件不显示 Some Components Don't Display When Fullscreen

Mint UI version
2.2.13
OS/Browsers version
Windows10/Chrome latesd、MIUI10 latesd/UC/QQ/Wecaht
Vue version
2.5.17
Reproduction Link
jsfiddle
Steps to reproduce
http://saatana.cn/shop
点击右上角 Click upper right corner
点击全屏显示 Click show with fullscreen
点击登陆按钮 Click button for login
不显示加载框和底部提示语 Don't display the loadingBox and toast
What is Expected?
所有提示组件正常显示
All of the tips components always be display
What is actually happening?
全屏显示时提示组件都不显示
All of the tips components always don't display when fullscreen

我提交这个问题的时候居然还得F12看重现链接的验证规则还知道应该写啥
其实我看完了也不知道为啥这个验证规则要这样写，所以把重现链接写在了重现步骤里面
I have to see the rules of ReproductionLink in devtools's source when I commit this issues and then I know how to full in the field named ReproductionLink................
however,until now I don't anderstand why the rules of this field called ReproductionLink are designed like this.
So I write the ReproductionLink in StepsToReproduce...


Update sp-sequence-get-range-transact-sql.md

Added proper schema prefix to the first example.

@AaronBertrand - thanks for updating this!
#sign-off


open close

Problem
Steps to reproduce the issue

Expected behavior
System details (run AWS: About and/or Amazon Q: About)

OS:
Visual Studio Code version:
AWS Toolkit version:
Amazon Q version:

hi


Typescript support

Great job on this component, but do you plan to add Typescript support? Just a type declaration on  npm should do just fine.

Happy to accept PR

Hi! We need to use this plugin in our typescript project. So I was written a simple declaration file for it.
You can find it here. https://gist.github.com/SergeyKons/96067830669ae62aef7fd5aeba9ea640
Later I will publish it to definitely typed


bug: invalid dates entered manually break the page

I'm working with DatePicker component and have a problem with setting maxDate/minDate values. When I tried to set invalid value by usual input to the field and click out of this field page is crashed. Could you please help with solving this issue?
I created a sandbox to reproduce it here: https://codesandbox.io/s/react-magma-example-forked-si1vg?file=/example.tsx

https://github.com/cengage/react-magma/blob/dev/packages/react-magma-dom/src/components/DatePicker/CalendarHeader.tsx#L69 seems to be where the problem is
would just changing it to:
const capitalizeCurrentMonth =
    currentMonth && currentMonth.charAt(0).toUpperCase() + currentMonth.slice(1);

work?
would that break a11y?

looks like when an invalid date gets entered we try to set the Input value to '' but we don't fire an onChange event for it 🤔

after a lot of playing, it seems that it's having a minDate that's later than today breaks the calendar... typing in the date manually just sets the date to null and resets the form which tries to focus on something impossible
as of 04/06/2021 this will have the same issue: <DatePicker minDate='05/29/2021' labelText="Date" />


Added citation related infos to mqc module and overview file

I have added the citation information for JCC(2021) paper in MQC module and PyUNIxMD manual.

Please, show compiled manual.

Overall, I think the order (First name and last name) would be better since the developer lists show this order.

Please, use italic letter for Journal in manual.

@jkha-unist @DaehoHan @tikimtikim @swmoon-unist
For citations, should we use identical citation style as used in reference section?
Current manual uses 'unsrt' and other default settings in bibtex.

I'd like to keep this version and change the citation style into ACS later.

OK


Game idea: Typing games

First to type their Torn ID
First to guess a random number between 1 and 10
First to @tag a random member online in Discord.
others?

Randomly make it the second person to do x that wins just to trip people up.


chore: update dependencies

This PR updates dependencies, including the sdk to 0.27.0.
Some are skipped as they do not support python 3.7 anymore. See #208

Tests are failing:
FAILED tap_github/tests/test_tap.py::test_last_state_message_is_valid - assert 'progress_markers' not in '{"type": "S...000Z"}}]}}}}'
  'progress_markers' is contained here:

I've changed the sdk version to v0.22.1 temporarily to confirm that tests are passing. See linked sdk issue for details on the problem this PR surfaced.

I guess it's harmless to merge it as is, but there is also no emergency in the sense that I don't think the SDK upgrade 0.19 -> 0.22.1 brings any changes that this tap uses.
Let's keep this open until the sdk situation is clarified, it'll save us a bit of PR overhead :)

@laurentS @ericboucher I have a PR to fix this issue in the SDK, with tests passing here (above) when pointing at the PR branch. Will revert to > 0.22.1 here for now and update you once the fix is released 🙂👍

@laurentS any idea when this will land? I'm prepping a PR to fix incremental loading of the GH Actions (workflow_runs etc.) streams at https://github.com/meshcloud/tap-github/tree/feature/fix-actions-streams and based this off of your branch here.

@JohannesRudolph I'm going to merge this as is, with the sdk updated to 0.22.1, and we can open a new PR to update to the latest sdk version when https://github.com/meltano/sdk/pull/1708 is merged.


Determine need for org.ehcache.config.builders.ResourcePoolsBuilder#withReplacing method

The ResourcePoolsBuilder.withReplacing was added to preserve the ability to replace a ResourcePool in an existing collection as part of removing replace capability from the with (and adjunct) method.  The expectation was there would be some places in the code where the withReplacing method would be required over with.  This turned out not to be the case.
Is withReplacing needed?
If needed, unit test coverage needs to be added to support the use case.

The only use I can think of for this is reusing a resource pool builder and wanting to overwrite a previous;y defined resource.  I also wonder if this might have interactions/implications for #357

Changes done for #357 end up having no impact on this, in the sense that the decided overwrite behaviour is at the resource pools level, not per resource pool. As such the withReplacing remains unused in the code base.
However, I still believe it makes sense to have it for the use case described by Chris.
Starting work on this issue to add the tests for it.


[DatePicker] Add keyboard support to inline mode

[x] PR has tests / docs demo, and is linted.

When container=inline and keyboardEnabled=true on a datepicker component, this enables keyboard support. You can tab in, type a date, tab out. Also, clicking directly on the control also focuses the textbox.
I'm re-using the date state variable for the current textbox value as well as the stored date object, if this needs to be changed let me know how you would like it to be implemented instead.
Issue #4219 should likely also be looked at in this pull request to ensure that the popup calendar doesn't hide the textbox while it has focus.
Closes #3933

@caesay Nice PR! I just had one issue. When we change the date through keyboard and hit enter key, it changes back to the previous date and doesn't save the new date. Is there any way you could handle that?

@aahan96: I took a look at the enter button - handling it in keydown and calling .stopPropagation() seems to have no effect (working for other keys) so I'm not sure how to proceed from there. It was OK for me to simply tab to the next element after entering something with the keyboard but I agree it would be optimal to get it working.

@aahan96 I've added a commit which handles the enter key.


Non-static registry

Feature Proposal
Would like a non-static registry
Example:  Two teams work in different areas of an application. The static nature of the registry makes it very likely that these two teams have collisions/conflicts.
A per-instance registry would be a nice addition
Possible Implementation
No response

@robrez are you looking for the chart type registry to be per instance or the plugin registry?

Hi @etimberg , that's right.. the Singleton / static registry is causing some unwanted conflict


Respect location ssdp header

I'm writing a proxy for my hue bridge that augments it with a new non-hue networked lights - when doing discovery of hue bridges, they respond with a location header which is a URL to a description document.  That document contains useful information like bridge serial number and the URLBase property.
Right now node-hue-api does a ssdp search for bridges, then requests /description.xml from port 80 of the hosts that respond to the search in order to get the bridge id - this happens to follow the hue implementation but doesn't seems to be in the spirit of the protocol - it should follow the location header instead.
So, for example, the ssdp search node-hue-api generates is:
M-SEARCH * HTTP/1.1
HOST: <IP_ADDRESS>:1900
MAN: ssdp:discover
MX: 10
ST: urn:schemas-upnp-org:device:Basic:1

The response is then:
HTTP/1.1 200 OK
ST: urn:schemas-upnp-org:device:Basic:1
USN: uuid:07a50742-5a89-4b27-9a9e-374df1191a61::urn:schemas-upnp-org:device:Basic:1
LOCATION: http://<IP_ADDRESS>:64764
CACHE-CONTROL: max-age=100
DATE: Sat, 18 Jul 2015 11:43:43 GMT
SERVER: FreeRTOS/7.4.2 UPnP/1.0 IpBridge/1.8.0
EXT:

The next request from node-hue-api should be to http://<IP_ADDRESS>:64764, instead it's to http://<IP_ADDRESS>/description.xml
I think this is because when makes the request to the host and then has the path to /description.xml hard coded.
As a shameless plug I've written an ssdp implementation that automagically goes off, fetches and parses the contents of the location header for you - might solve the problem..

I am respecting the location header being returned. The search data being returned to me from my bridge has a value of http://<IP_ADDRESS>:80/description.xml for the LOCATION value.
The point of the code that you indicate as hard coded is a direct link to the description.xml file, but is not used in the lookup from the SSDP lookups.
I had looked at your library in the past, but I wanted this library to be a small as possible, and your SSDP library includes a lot of extra dependencies that I did not want to pull in for an edge case bridge lookup that over 95% of users of the library would not need. When Hue released an update to finding of the bridges, they now have a broker service, which is the preferred discovery method.

I'm not sure that it is respecting the location header.  Take a look at this gist.
If you run server.js, it'll open two http servers - one on port 80, one on 8080 and set up a dgram socket to respond to bridge search requests.  The dgram socket responds with LOCATION: http://localhost:8080/foo.xml in the message, so if node-hue-api respects the location header, it should make a request to port 8080 and request /foo.xml.
search.js contains the upnp example search code from the node-hue-api readme.  When I run it I see:
$ sudo node server.js
Socket listening
Responding to bridge search request
Responded to bridge search request
Got request for /description.xml on port 80

$ node search.js
Hue Bridges Found: [{"id":"WRONG PORT!","ipaddress":"localhost"}]

So it's requesting http://localhost:80/description.xml even though the LOCATION header in the search response is http://localhost:8080/foo.xml.

Thanks for that, the penny finally dropped. I had checked that the LOCATION was being returned in the SSDP results, but of course you were right, as after that I defaulted to pulling the discovery xml via an API call, thereby not actually following the URL.
I have switched the code to issue a simplified HTTP GET on the LOCATION that is returned, which has no change on my bridge, as it is returning the http://<IP_ADDRESS>:80/description.xml value for me.
This has been released in version 1.1.1 of the library.


auto-upload

Add auto-upload functionality. This should happen as soon as the device goes online.
Requested by Gareth Walters (esri Aus)

Enhancements: The only draw back in it currently is they would like the app to auto upload. Store locally when offline and when online just send the data straight away.

Raised by Minnesota Power. Users are not always aware of the fact that the must upload their features. Auto upload would provide a solution to this issue, together with making it clearer in the app that the button must be pressed.

Implemented auto upload -

Options in settings to enable and set interval
Upload will trigger automatically every interval when device is online

Have verified that the auto-upload functionality is working.

Varying the interval works
Upload automatically starts when the project is in focus and the timer runs out
Upload will not start unless the device is online
Points, lines and polygons (and attachments) uploaded

Version 1.0.59 Tested on the following:

Surface Book Pro - Windows 10 (Desktop and UWP)
IPhone 7 Plus - 11.4.1
Nexus 6P - Android 8


Merging of bookmarks store wrong verse

It was reported that when bookmarks are merged it can happen that the wrong verse is stored

@ferpavao I created this issue here so it‘s easier to track 🙂 . Would you be able to explain the problem further, maybe also with steps to reproduce? It might also help if you could provide me two backups that show the issue. If you feel like it, you can send it to<EMAIL_ADDRESS>- but no worries if you don‘t want to do that.

Hey @AndreasSko, sorry I took so long. I was traveling.
I did some testing earlier and the issue only occurs when merging a backup from an older version of JW Library with a backup from version 14. Unfortunately I didn't save any backups from previous versions. If you can get ahold of some older version backup, I think you'll be able to find that. Thanks! :)

Hi @AndreasSko. The problem with the bookmarks overlapping in the Study Bible happened again with version 0.7.6 and JW Library 14.1.
I can provide a copy of the backup file merged so you can investigate for further details if you want.
Thanks!

Hi @ferpavao, sorry for my late reply. If you still have the backups that you used for merging and the resulting merged backup, that would be really helpful. If you like, you can send it to me via email at<EMAIL_ADDRESS>:)

Hi @AndreasSko. Sorry for taking such a long time. I've been caught up at work and couldn't find time to address this. I just sent you a copy of the backup with the overlapping bookmarks. Let me know if you need anything else.
Thanks!

Hi @AndreasSko, any updates on this one?
Thanks! :)


[BUG]: Adding a column in a table named transaction errors out.

What version of drizzle-orm are you using?
0.29.0
What version of drizzle-kit are you using?
0.20.4
Describe the Bug
I tried adding a new column called value to a table named transaction.
The generated migration file,
/*
 SQLite does not support "Set default to column" out of the box, we do not generate automatic migration for that, so it has to be done manually
 Please refer to: https://www.techonthenet.com/sqlite/tables/alter_table.php
                  https://www.sqlite.org/lang_altertable.html
                  https://stackoverflow.com/questions/2083543/modify-a-columns-type-in-sqlite3

 Due to that we don't generate migration automatically and it has to be done manually
*/--> statement-breakpoint
ALTER TABLE transaction ADD `value` real;

I got this error
code: 'SQLITE_CONSTRAINT_FOREIGNKEY',
rawCode: 787

I added backticks "`"  around transaction and it worked.
Expected behavior
The generated migration file should work.
Environment & setup
in my local environment, running with better-sqlite3

Should be fixed in latest drizzle-kit versions. Feel free to reopen this one if it's not fixed for you!


fix: catch any exception from action_controller

Description
Related to https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues/635
This PR add rescue for dispatch that catch any controller-related error.
Test

Ran the general bundle exec rake test with modified test cases from metal_test.rb (e.g. added more exception event assertion).
Tested on sample rails app with both <IP_ADDRESS> and 7.0.7, and examined the trace to make sure the exception events are generated.

Sample exception event from span
span_data: #<struct OpenTelemetry::SDK::Trace::SpanData name="UsersController#new", kind=:server, status=#
<OpenTelemetry::Trace::Status:0x0000ffff88bb1290 @code=2, @description="">,
parent_span_id="\x00\x00\x00\x00\x00\x00\x00\x00", total_recorded_attributes=12, total_recorded_events=1,
total_recorded_links=0, start_timestamp=1693430481379543418, end_timestamp=1693430481943080293, attributes=
{"http.method"=>"GET", "http.host"=>"<IP_ADDRESS>:8002", "http.scheme"=>"http", "http.target"=>"/users/new",
"http.user_agent"=>"curl/7.74.0", "code.namespace"=>"UsersController", "code.function"=>"new",
"http.status_code"=>500}, links=nil, events=[#<struct OpenTelemetry::SDK::Trace::Event name="exception", attributes=
{"exception.type"=>"NoMethodError", "exception.message"=>"undefined method `fun_fun' for #<User id: nil, name: nil,
email: nil, created_at: nil, updated_at: nil, password_digest: nil, remember_digest: nil, admin: false, activation_digest: nil,
activated: false, activated_at: nil, reset_digest: nil, reset_sent_at: nil>",
"exception.stacktrace"=>"/usr/local/bundle/gems/activemodel-7.0.7/lib/active_model/attribute_methods.rb:450:in
`method_missing': undefined method `fun_fun' for #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil,
password_digest: nil, remember_digest: nil, admin: false, activation_digest: nil, activated: false, activated_at: nil,
reset_digest: nil, reset_sent_at: nil> (NoMethodError)\n\tfrom /var/app/app/controllers/users_controller.rb:19:......"},
timestamp=1693430481512392668>], resource=#<OpenTelemetry::SDK::Resources::Resource:0x0000ffffab314ee8
@attributes={"service.name"=>"ruby-post-release-test", "process.pid"=>783, "process.command"=>"bin/rails",
"process.runtime.name"=>"ruby", "process.runtime.version"=>"3.1.0", "process.runtime.description"=>"ruby 3.1.0p0 (2021-
12-25 revision fb4df44d16) [aarch64-linux]", "telemetry.sdk.name"=>"opentelemetry", "telemetry.sdk.language"=>"ruby",
"telemetry.sdk.version"=>"1.2.0"}>, instrumentation_scope=#<struct OpenTelemetry::SDK::InstrumentationScope
name="OpenTelemetry::Instrumentation::Rack", version="0.22.1">, span_id="\xF4\x9A\xF0\t\xFEE\x9AX",
trace_id="\r\xD0\x03\xDF\xC25l\x9A\x89z,L\x1A1\xAF\x85", trace_flags=#
<OpenTelemetry::Trace::TraceFlags:0x0000ffffac210168 @flags=1>, tracestate=#
<OpenTelemetry::Trace::Tracestate:0x0000ffffaaae6438 @hash={"sw"=>"0000000000000000-01"}>>

Limitation
For error that is caused by actionview, there may be duplication exceptions (not in same span). One exception is from action_view span, and another exception is from active_controller.

@arielvalentin @robertlaurin any bandwidth to look at this PR again?  This is important for our organization's OTel adoption :)
Regarding the alternate approach, does it mean the application operator needs to specifically configure an "exceptions app", or would it be a general approach for any Rails apps?

@arielvalentin @robertlaurin any bandwidth to look at this PR again? This is important for our organization's OTel adoption :)
Regarding the alternate approach, does it mean the application operator needs to specifically configure an "exceptions app", or would it be a general approach for any Rails app?

This is a general concept that exists within Rails, and the alternate approach is a means of leveraging that convention. https://guides.rubyonrails.org/configuring.html#config-exceptions-app

Thanks for the information and links.
However, I think if the user didn't set the exception controller through config. exceptions_app = ... in rails configuration file (e.g. config/environments/*.rb), then the request.env['action_dispatch.exception'] will always be nil.
I just tried with my test rails app and also the test case without use_exception_app, and then raise the error, there is no data in request.env['action_dispatch.exception']


How to config linear hashing?

Have you been read the document for about how to config ShardingSphere?

If no response more than 7 days and we cannot reproduce it on current information, we will close it.


Create dedicated install page

https://draculatheme.com/visual-studio-code
https://dotenv.org/visual-studio-code

not going to do


Support weights loading for OpenVINO IRs

OpenVINO models (IRs) contains XML and BIN files. For now Netron loads only XML file with topological description. And it would be great if Netron will load weights from BIN file and display values as implemented in other frameworks (like in ONNX).

All information about offsets, sizes and types of tensor can be found in XML.
Note: BIN files are optional an may not exists in the same folder with XML file.

Duplicate of #191. @demid5111

@GlebKazantaev @demid5111 What format are .bin files stored in? Is it possible to detect the .bin format from other .bin files which use the same extension but are not generated by OpenVINO?

@demid5111


Integrate a Chatbot for Instant User Support

Is your feature request related to a problem? Please describe.
Enhance the website's user experience by integrating a chatbot that provides instant answers to user inquiries. The chatbot should be easily accessible, provide relevant responses, and offer seamless assistance for common queries, improving user engagement and support.
Describe the solution you'd like
Add a chatbot icon or button that floats on the bottom-right corner of the site.
When clicked, the chatbot window should expand with a smooth animation, displaying an input field and previous chat history.
The chatbot should respond to frequently asked questions (related to the FAQ section) and common inquiries about products or services.
Implement a fallback response for questions outside the chatbot's scope (e.g., "Sorry, I don't have an answer for that. Please contact our support team.").
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
@Rakshit-gen please assign this to me under gssoc-ext and hacktoberfest

Sure you can work on it!


ISR pages are not regenerating on time

Before opening, please confirm:

[X] I have checked to see if my question is addressed in the FAQ.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.

App Id
d3iusqza06a1ll
Region
ap-south-1
Amplify Console feature
Not applicable
Describe the bug
We had multiple pages with revalidate 10, but for some reason the regeneration is not taking place.
Sometime randomly it regenerates the pages, but sometime completely missed the regeneration.
We tried multiple timestamps like after 5sec, 10sec, 20sec but the behaviour is very inconsistent. Not sure why this is happening.
Expected behavior
Amplify should respect revalidate and make sure it either generates the page or provide error in cloudwatch if generation fails.
Reproduction steps
NA
Build Settings
No response
Additional information
No response

@yogeshydvme what version of Next are you using?

10.2.3

@yogeshydvme can you try with the latest version of next: next: 11.1.2 and the latest version of Amplify SSR (in the Build Settings, set the Next.js Version to latest: https://docs.aws.amazon.com/amplify/latest/userguide/server-side-rendering-amplify.html#update-app-nextjs-version)

I'm seeing a similar issue on my end. Our app id is: d1xm76k8s6lqms. I've set all revalidations to 1 minute and do not see the latest changes reflected after publishing our CMS / Contentful content. We've recently migrated away from Vercel into AWS directly, so I can verify that nothing has been changed during the migration.

How to update regenration lambda timeout, by default it is assigning 10 sec and usually while generating page it times out. Please help.

Also having the same problem here. The timing of the regeneration is very inconsistent. Currently using next 11.1.2, _LIVE_UPDATES is also already set to latest.
Any help is appreciated.

@yogeshydvme Have you deployed your app after October 7th? The timeout was raised to 30 seconds which is the max.  Are you still seeing it timeout after 10 seconds?

Actually, looks like the timeout is still set to 10s on the regeneration lambda even after our change to update it.  It only took effect on other lambdas.  Will investigate further.

We've identified the issue causing the regeneration lambda timeout to be limited to 10s, we will follow up when it has been addressed.

sure, it will be very helpful

Any updates on this issue?


Missing methods to change min/max values of &mut ProgressBar

First: is this a bug report? A suggestion? Or asking for help? Bug report/suggestion
Problem description
For a &mut ProgressBar, there are no methods to set its min and max values. The only methods to change their values (min(self, usize), max(self, usize)) take ownership of the ProgressBar, which is not possible if you have a reference.
Workaround: to gain ownership, create a "dummy" progress bar and use mem::swap, or use unsafe code:
let progress_bar: &mut ProgressBar = ...;
// This is safe because we have exclusive (&mut) access
unsafe {
    use std::ptr;
    let mut value = ptr::read(progress_bar);
    value = value.max(new_max);
    ptr::write(progress_bar, value); // This consumes 'value' so it is not dropped twice
}

Environment

Operating system: Arch Linux
Backend used: ncurses

If using ncurses on linux, ncurses version? 6.2

Current locale (run locale in a terminal). en_CA.UTF-8
Cursive version (from crates.io, from git, ...) main branch

Hi, and thanks for the report!
Indeed, looks like a gap in the API!

Latest commit should now bring set_{min,max,range,label,counter} to bring parity with the chainable functions.


[FeatureReq - Edge Addons site] French translation issue in shopping addon

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Hi everyone,
French translation for "save" appears as "enregistrer", "enregistrez" and not "économiser", "économisez" in shopping addon.

Hey @nanousheka, could you please provide us with screenshots of the reporting error along with the extension details? This will help us verify the issue and assist you further.


[ on-call ] Sorting service items to fix dev seed flakiness

Summary
This PR provides a fix for the intermittent error that occurs when trying to populate dev seed data.
Here is a link to the error in CircleCI: https://app.circleci.com/pipelines/github/transcom/mymove/50340/workflows/5d636e0f-d0fd-4ee9-8593-f85132245cba/jobs/829841
This error also occurs on the local machine as you can see in this screenshot:

The error occurs when the DDFSIT service item appears before the DDASIT service item in the Payment Service Items array. This causes the DDFSIT service item to already be attached to the MTO shipment when doing a validation check on the DDASIT service item, which throws the error.
The fix involves reshuffling the order in which the service items were approved and then sorting them by approval date.
Setup to Run Your Code
run make db_dev_e2e_populate and  make db_dev_fresh
verify that the move with move code PARAMS is functioning as you would expect.

Warnings

:warning:
Please add the JIRA issue key to the PR title (e.g. MB-123)

  Generated by :no_entry_sign: dangerJS against ff10da92531b32c843f82191df21eac703d53f2b


Caffe benchmarking fails on Android

Steps to reproduce

$ ck install package:lib-caffe-bvlc-master-cpu-android --target_os=android21-arm64
$ When compiling select gflags package 2.1.2, not trunk!
$ copy compiled caffe binary to your mobile device (/data/local/tmp)
$ adb shell
$ cd /data/local/tmp
$ chmod 755 ./caffe
$ ./caffe time --model={path to caffe model - can copy from Android app} --iteration=1

Actual result
it will fail with seg fault ...
Expected result
Works fine and recognize image

Daniil, just one note that it will not recognize images but will be benchmarking network topology. It's a standard way of benchmarking Caffe, that's why we need it ... Thanks!

Also according to issue described at https://github.com/ctuning/ck-math/commit/5ad3f9ebb92f1c1b0969836c8d282dd3e4410d6b#commitcomment-20118732
I've tried to reproduce it with command

ck compile program:caffe  --target_os=android21-arm6
and selected
** 0) lib-caffe-bvlc-master-opencl-android  Version trunk
** 3) lib-viennacl-opencl-trunk-android  Version trunk
And got error:

[100%] Linking CXX shared library libviennacl.so
cd /home/daniil/CK-TOOLS/lib-viennacl-opencl-trunk-android-ndk-4.9.x-android21-arm64/obj/libviennacl && /usr/bin/cmake -E cmake_link_script CMakeFiles/viennacl.dir/link.txt --verbose=1
/home/daniil/Soft/android-ndk-r12b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc  -fPIC -fexceptions -frtti -Wno-psabi --sysroot=/home/daniil/Soft/android-ndk-r12b/platforms/android-21/arch-arm64 -funwind-tables -fsigned-char -no-canonical-prefixes -fdata-sections -ffunction-sections -Wa,--noexecstack  -fopenmp -DVIENNACL_WITH_OPENMP -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -O3 -DNDEBUG  -Wl,--no-undefined -Wl,-allow-shlib-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now   -shared -Wl,-soname,libviennacl.so -o libviennacl.so CMakeFiles/viennacl.dir/src/backend.cpp.o CMakeFiles/viennacl.dir/src/blas1.cpp.o CMakeFiles/viennacl.dir/src/blas1_host.cpp.o CMakeFiles/viennacl.dir/src/blas1_opencl.cpp.o CMakeFiles/viennacl.dir/src/blas2.cpp.o CMakeFiles/viennacl.dir/src/blas2_host.cpp.o CMakeFiles/viennacl.dir/src/blas2_opencl.cpp.o CMakeFiles/viennacl.dir/src/blas3.cpp.o CMakeFiles/viennacl.dir/src/blas3_host.cpp.o CMakeFiles/viennacl.dir/src/blas3_opencl.cpp.o  -L/home/daniil/CK-TOOLS/lib-viennacl-opencl-trunk-android-ndk-4.9.x-android21-arm64/install/libs/arm64-v8a /usr/lib/x86_64-linux-gnu/libOpenCL.so  "/home/daniil/Soft/android-ndk-r12b/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/libgnustl_static.a" "/home/daniil/Soft/android-ndk-r12b/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/libsupc++.a" -lm
/usr/lib/x86_64-linux-gnu/libOpenCL.so: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
make[2]: *** [libviennacl/libviennacl.so] Error 1
make[2]: Leaving directory `/home/daniil/CK-TOOLS/lib-viennacl-opencl-trunk-android-ndk-4.9.x-android21-arm64/obj'
make[1]: *** [libviennacl/CMakeFiles/viennacl.dir/all] Error 2
make[1]: Leaving directory `/home/daniil/CK-TOOLS/lib-viennacl-opencl-trunk-android-ndk-4.9.x-android21-arm64/obj'
make: *** [all] Error 2
Error: failed making ViennaCL ...

Now got another problem with

$ ck install package:lib-caffe-bvlc-master-cpu-android --target_os=android21-arm64

/home/daniil/CK-TOOLS/lib-caffe-bvlc-master-trunk-android-ndk-4.9.x-development-1a02f28-development-b6a5e05-1.58.0-development-433edc7-android21-arm64/src/src/caffe/util/signal_handler.cpp:1:26: fatal error: boost/bind.hpp: No such file or directory
 #include <boost/bind.hpp>
                          ^
compilation terminated.
/home/daniil/CK-TOOLS/lib-caffe-bvlc-master-trunk-android-ndk-4.9.x-development-1a02f28-development-b6a5e05-1.58.0-development-433edc7-android21-arm64/src/src/caffe/util/benchmark.cpp:1:53: fatal error: boost/date_time/posix_time/posix_time.hpp: No such file or directory
 #include <boost/date_time/posix_time/posix_time.hpp>
                                                     ^
compilation terminated.
/home/daniil/CK-TOOLS/lib-caffe-bvlc-master-trunk-android-ndk-4.9.x-development-1a02f28-development-b6a5e05-1.58.0-development-433edc7-android21-arm64/src/src/caffe/common.cpp:1:28: fatal error: boost/thread.hpp: No such file or directory
 #include <boost/thread.hpp>
                            ^
compilation terminated.
src/caffe/CMakeFiles/caffe.dir/build.make:110: recipe for target 'src/caffe/CMakeFiles/caffe.dir/util/signal_handler.cpp.o' failed
make[2]: *** [src/caffe/CMakeFiles/caffe.dir/util/signal_handler.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
src/caffe/CMakeFiles/caffe.dir/build.make:134: recipe for target 'src/caffe/CMakeFiles/caffe.dir/util/benchmark.cpp.o' failed
make[2]: *** [src/caffe/CMakeFiles/caffe.dir/util/benchmark.cpp.o] Error 1
src/caffe/CMakeFiles/caffe.dir/build.make:86: recipe for target 'src/caffe/CMakeFiles/caffe.dir/common.cpp.o' failed
make[2]: *** [src/caffe/CMakeFiles/caffe.dir/common.cpp.o] Error 1
/home/daniil/CK-TOOLS/lib-caffe-bvlc-master-trunk-android-ndk-4.9.x-development-1a02f28-development-b6a5e05-1.58.0-development-433edc7-android21-arm64/src/src/caffe/parallel.cpp:11:28: fatal error: boost/thread.hpp: No such file or directory
 #include "boost/thread.hpp"
                            ^
compilation terminated.
src/caffe/CMakeFiles/caffe.dir/build.make:62: recipe for target 'src/caffe/CMakeFiles/caffe.dir/parallel.cpp.o' failed
make[2]: *** [src/caffe/CMakeFiles/caffe.dir/parallel.cpp.o] Error 1
CMakeFiles/Makefile2:240: recipe for target 'src/caffe/CMakeFiles/caffe.dir/all' failed
make[1]: *** [src/caffe/CMakeFiles/caffe.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
Error: build failed!
CK error: [package] package installation failed!

and I'm not able to select
"gflags package 2.1.2, not trunk!"
at
~/CK-TOOLS/lib-caffe-bvlc-master-trunk-android-ndk-4.9.x-development-1a02f28-development-b6a5e05-1.58.0-development-433edc7-android21-arm64/src/src/caffe/util/benchmark.cpp
used "boost" lib
#include <boost/date_time/posix_time/posix_time.hpp>
but boost lib not checks or installs before ...

For OpenCL - the problem is that you have it already installed for x86-64 but not for ARM64 and CK automatically detects it and picks it up as default (I don't have check for a specific archi - if there is one, we can add it to avoid such problems)... I think I know how to solve it - I will need to add OpenCL package which has to be reinstalled for Android - I will check it later ...
As for BOOST, it's a bit strange, since CK compiles it and should provide paths (it works on my machine) ...

I believe I fixed openCL problem for Android. You can just update repos (ck pull all), but I am not sure for ViennaCL/OpenCL versions. Can you please try again?
BTW, I just prepared a workflow but I didn't check all deps, etc. for OpenCL version of Caffe ... Maybe @psyhtest will help with that (while I can provide fixes to CK packages). You can also check Makefiles and install.sh scripts to fix deps ...

Ok but problem with protobuf blocks this case.

Working on that now ...

I think I fixed protobuf. You can make 'ck pull all' and then you should have an option for protobuf-3.0.0 for Android -> I checked it and it compiles fine ... Can you please check it?

Now command
$ ck install package:lib-caffe-bvlc-master-cpu-android --target_os=android21-arm64
works without any error but I'm not able to select gflags package 2.1.2
...

I've got no android21-arm64 comopatible device at this moment but I've reproduced the problem at my android21-arm-v7a-32 device using lib compiled at
CK-TOOLS/lib-caffe-bvlc-master-trunk-android-ndk-4.9.x-development-1a02f28-development-b6a5e05-1.62.0-development-433edc7-android21-arm-v7a-32/install/lib

./caffe --model=/sdcard/openscience/data//4a6e91d75d682cec/m --iteration=1
Segmentation fault

Yes, I think it doesn't depend on the CPU arch. Maybe you can debug it to narrow down problem? Thanks a lot!

Valgrind could be more useful but it has error and does not compiles for  arm-v7a
m_coredump/coredump-elf.c:147:4: error: conflicting types for 'Elf32_Nhdr'
    Elf32_Nhdr;
    ^
In file included from /home/daniil/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/elf.h:32:0,
                 from m_coredump/coredump-elf.c:56:
/home/daniil/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/linux/elf.h:421:3: note: previous declaration of 'Elf32_Nhdr' was here
 } Elf32_Nhdr;
   ^
Makefile:4787: recipe for target 'm_coredump/libcoregrind_arm_linux_a-coredump-elf.o' failed
make[3]: *** [m_coredump/libcoregrind_arm_linux_a-coredump-elf.o] Error 1
make[3]: *** Waiting for unfinished jobs....
mv -f m_debuginfo/.deps/libcoregrind_arm_linux_a-readexidx.Tpo m_debuginfo/.deps/libcoregrind_arm_linux_a-readexidx.Po
mv -f m_debuginfo/.deps/libcoregrind_arm_linux_a-readdwarf3.Tpo m_debuginfo/.deps/libcoregrind_arm_linux_a-readdwarf3.Po
mv -f m_debuginfo/.deps/libcoregrind_arm_linux_a-readelf.Tpo m_debuginfo/.deps/libcoregrind_arm_linux_a-readelf.Po
make[3]: Leaving directory '/home/daniil/Projects/Dividiti/ADB_manual/4/valgrind/coregrind'
Makefile:8412: recipe for target 'install' failed
make[2]: *** [install] Error 2
make[2]: Leaving directory '/home/daniil/Projects/Dividiti/ADB_manual/4/valgrind/coregrind'
Makefile:830: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/daniil/Projects/Dividiti/ADB_manual/4/valgrind'
Makefile:1129: recipe for target 'install' failed
make: *** [install] Error 2

So adb log cat after ./caffe time ... is :
12-12 16:28:06.640 17274-17274/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xceb77a08 in tid 17274 (caffe)
12-12 16:28:06.700 2856-2856/? I/DEBUG: pid: 17274, tid: 17274, name: caffe  >>> ./caffe <<<
12-12 16:28:06.715 2856-2856/? I/DEBUG:     #04 pc 004d00ab  /data/local/tmp/caffe1/libcaffe.so
12-12 16:28:06.715 2856-2856/? I/DEBUG:     #05 pc 00234aeb  /data/local/tmp/caffe1/libcaffe.so
12-12 16:28:06.715 2856-2856/? I/DEBUG:     #06 pc 00237f97  /data/local/tmp/caffe1/libcaffe.so
12-12 16:28:06.715 2856-2856/? I/DEBUG:     #07 pc 002396a5  /data/local/tmp/caffe1/libcaffe.so
12-12 16:28:06.715 2856-2856/? I/DEBUG:     #08 pc 0014913b  /data/local/tmp/caffe1/libcaffe.so (caffe::GlobalInit(int*, char***)+6)

so initialization could not be applied.
The same for armv7a and armv8a-64

Maybe you can add some debug prints of different pointer or before/after instructions to caffe source and try to figure out where it breaks exactly?

I've run caffe and it's passed init part but crashed at enother place
from android monitor:
12-12 20:32:56.655 20047-20047/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8f9888b0 in tid 20047 (caffe)
12-12 20:32:56.715 2856-2856/? I/DEBUG: pid: 20047, tid: 20047, name: caffe  >>> ./caffe <<<
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #02 pc 004e7557  /data/local/tmp/caffe3/libcaffe.so (operator delete(void*)+2)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #03 pc 00507c03  /data/local/tmp/caffe3/libcaffe.so (std::string::assign(std::string const&)+78)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #04 pc 00259939  /data/local/tmp/caffe3/libcaffe.so (google::(anonymous namespace)::TryParseLocked(google::(anonymous namespace)::CommandLineFlag const*, google::(anonymous namespace)::FlagValue*, char const*, std::string*)+452)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #05 pc 0025cb35  /data/local/tmp/caffe3/libcaffe.so (google::(anonymous namespace)::CommandLineFlagParser::ProcessSingleOptionLocked(google::(anonymous namespace)::CommandLineFlag*, char const*, google::FlagSettingMode)+188)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #06 pc 0025e28f  /data/local/tmp/caffe3/libcaffe.so (google::ParseCommandLineFlagsInternal(int*, char***, bool, bool)+310)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #07 pc 0025eec1  /data/local/tmp/caffe3/libcaffe.so (google::ParseCommandLineFlags(int*, char***, bool)+4)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #08 pc 001404f7  /data/local/tmp/caffe3/libcaffe.so (caffe::GlobalInit(int*, char***)+6)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #09 pc 00008037  /data/local/tmp/caffe3/caffe (main+110)
12-12 20:32:56.790 2856-2856/? I/DEBUG:     #11 pc 00008aec  /data/local/tmp/caffe3/caffe (_start+88)

from adb console:
[1] + Segmentation fault   ./caffe time --model=/data/local/tmp/caffe1/model/ba4eb06e64795b0d/topology/deploy.prototxt --iterations=1
cat cat classification.localhost.shell.log.INFO.20161212-203230.19413
...
I1212 20:32:30.113517 19413 net.cpp:159] Top shape: 10 32 28 28 (250880)
I1212 20:32:30.113554 19413 net.cpp:167] Memory required for data: 198004280
I1212 20:32:30.113585 19413 layer_factory.hpp:77] Creating layer fire4/squeeze1x1_fire4/relu_squeeze1x1_0_split

...
I1212 20:32:30.142011 19413 net.cpp:285] Network initialization done.
I1212 20:32:30.189088 19413 net.cpp:763] Ignoring source layer label_data_1_split
I1212 20:32:30.196808 19413 net.cpp:763] Ignoring source layer pool10_pool10_0_split
I1212 20:32:30.196866 19413 net.cpp:763] Ignoring source layer loss
I1212 20:32:30.196892 19413 net.cpp:763] Ignoring source layer accuracy
I1212 20:32:30.196921 19413 net.cpp:763] Ignoring source layer accuracy_top5

Logs looks incomplete It mean process was interrupted by OS.
Also classification works fine for the same libs.
So problem more close to memory handling at caffelib.
Will try to localize or fix ...

Super! That's possible. Also note that glog and gflags were not originally designed for Android, so there may be problem with them, but if you will find the problem, that would be really great!

I've tried to run at andoid x86 emulator I've got another error:
eb06e64795b0d/topology/deploy.prototxt --iterations=1                         <
WARNING: linker: ./caffe: unused DT entry: type 0x6ffffffe arg 0x5190
WARNING: linker: ./caffe: unused DT entry: type 0x6fffffff arg 0x1
WARNING: linker: libcaffe.so: unused DT entry: type 0x6ffffffe arg 0x15e00c
WARNING: linker: libcaffe.so: unused DT entry: type 0x6fffffff arg 0x3
I1213 11:23:56.170637 20942 caffe.cpp:347] Use CPU.

CK error: [program] package installation failed!

Trying to compile caffe using ck for android21-arm64, also build failed
but with a little bit another error:
[100%] Linking CXX executable protoc
libprotobuf.a(common.cc.o): In function `google::protobuf::internal::DefaultLogHandler(google::protobuf::LogLevel, char const*, int, std::string const&)':
common.cc:(.text._ZN6google8protobuf8internal17DefaultLogHandlerENS0_8LogLevelEPKciRKSs[_ZN6google8protobuf8internal17DefaultLogHandlerENS0_8LogLevelEPKciRKSs]+0x298): undefined reference to `__android_log_write'
common.cc:(.text._ZN6google8protobuf8internal17DefaultLogHandlerENS0_8LogLevelEPKciRKSs[_ZN6google8protobuf8internal17DefaultLogHandlerENS0_8LogLevelEPKciRKSs]+0x5bc): undefined reference to `__android_log_write'
collect2: error: ld returned 1 exit status
make[2]: *** [protoc] Error 1
make[1]: *** [CMakeFiles/protoc.dir/all] Error 2
make: *** [all] Error 2
Error: build failed!
CK error: [program] package installation failed!

Just a note that 'ck compile program:caffe' is not working on Android (and only partially working on Linux) - it's in my ToDo to make it work properly on Android ... However, I fixed an issue with protobuf - I added BOTH host and Android version 3.0.0 which seems to be still working correctly ...

ok thanks! package instllation works fine now (for both arch):
$ ck install package:lib-caffe-bvlc-master-cpu-android --target_os=android21-arm64
$ ck install package:lib-caffe-bvlc-master-cpu-android --target_os=android21-arm-v7a

I've got another error now at my android device at first run:
cal/tmp/caffe1/model/ba4eb06e64795b0d/topology/deploy.prototxt -iterations 1  <
I1215 09:10:52.334631  9507 caffe.cpp:347] Use CPU.
terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_S_create
*** Aborted at<PHONE_NUMBER> (unix time) try "date -d @1481767852" if you are using GNU date ***
PC: @        0x0 (unknown)
Aborted

But second run almost completed (becnhmark finished  but after that sig foult):
eb06e64795b0d/topology/deploy.prototxt --iterations=1                         <
I1215 09:26:53.337648 32133 caffe.cpp:347] Use CPU.
I1215 09:26:53.359673 32133 net.cpp:60] Initializing net from parameters:
name: "AlexNet"
state {
  phase: TRAIN
  level: 0
  stage: "XHS\266 HS\266\220HS\266\310HS\266\000IS\2668IS\266\250IS\266pIS\266\340IS\266\030JS\266"
}
layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param {
    shape {
      dim: 10
      dim: 3
      dim: 227
      dim: 227
    }
  }
}
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 96
    kernel_size: 11
    stride: 4
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer {
  name: "norm1"
  type: "LRN"
  bottom: "conv1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "norm1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 2
    kernel_size: 5
    group: 2
  }
}
layer {
  name: "relu2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2"
}
layer {
  name: "norm2"
  type: "LRN"
  bottom: "conv2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "norm2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "conv3"
  type: "Convolution"
  bottom: "pool2"
  top: "conv3"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
  }
}
layer {
  name: "relu3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3"
}
layer {
  name: "conv4"
  type: "Convolution"
  bottom: "conv3"
  top: "conv4"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
    group: 2
  }
}
layer {
  name: "relu4"
  type: "ReLU"
  bottom: "conv4"
  top: "conv4"
}
layer {
  name: "conv5"
  type: "Convolution"
  bottom: "conv4"
  top: "conv5"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 1
    kernel_size: 3
    group: 2
  }
}
layer {
  name: "relu5"
  type: "ReLU"
  bottom: "conv5"
  top: "conv5"
}
layer {
  name: "pool5"
  type: "Pooling"
  bottom: "conv5"
  top: "pool5"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "fc6"
  type: "InnerProduct"
  bottom: "pool5"
  top: "fc6"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
  }
}
layer {
  name: "relu6"
  type: "ReLU"
  bottom: "fc6"
  top: "fc6"
}
layer {
  name: "drop6"
  type: "Dropout"
  bottom: "fc6"
  top: "fc6"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer {
  name: "fc7"
  type: "InnerProduct"
  bottom: "fc6"
  top: "fc7"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
  }
}
layer {
  name: "relu7"
  type: "ReLU"
  bottom: "fc7"
  top: "fc7"
}
layer {
  name: "drop7"
  type: "Dropout"
  bottom: "fc7"
  top: "fc7"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer {
  name: "fc8"
  type: "InnerProduct"
  bottom: "fc7"
  top: "fc8"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 1000
  }
}
layer {
  name: "prob"
  type: "Softmax"
  bottom: "fc8"
  top: "prob"
}
I1215 09:26:53.367755 32133 layer_factory.hpp:77] Creating layer data
I1215 09:26:53.367817 32133 net.cpp:102] Creating Layer data
I1215 09:26:53.367851 32133 net.cpp:410] data -> data
I1215 09:26:53.367924 32133 net.cpp:152] Setting up data
I1215 09:26:53.368027 32133 net.cpp:159] Top shape: 10 3 227 227 (1545870)
I1215 09:26:53.368059 32133 net.cpp:167] Memory required for data: 6183480
I1215 09:26:53.368083 32133 layer_factory.hpp:77] Creating layer conv1
I1215 09:26:53.368115 32133 net.cpp:102] Creating Layer conv1
I1215 09:26:53.368139 32133 net.cpp:436] conv1 <- data
I1215 09:26:53.368165 32133 net.cpp:410] conv1 -> conv1
I1215 09:26:53.368476 32133 net.cpp:152] Setting up conv1
I1215 09:26:53.368506 32133 net.cpp:159] Top shape: 10 96 55 55 (2904000)
I1215 09:26:53.368533 32133 net.cpp:167] Memory required for data: 17799480
I1215 09:26:53.368571 32133 layer_factory.hpp:77] Creating layer relu1
I1215 09:26:53.368602 32133 net.cpp:102] Creating Layer relu1
I1215 09:26:53.368624 32133 net.cpp:436] relu1 <- conv1
I1215 09:26:53.368651 32133 net.cpp:397] relu1 -> conv1 (in-place)
I1215 09:26:53.368680 32133 net.cpp:152] Setting up relu1
I1215 09:26:53.368700 32133 net.cpp:159] Top shape: 10 96 55 55 (2904000)
I1215 09:26:53.368726 32133 net.cpp:167] Memory required for data: 29415480
I1215 09:26:53.368747 32133 layer_factory.hpp:77] Creating layer norm1
I1215 09:26:53.368773 32133 net.cpp:102] Creating Layer norm1
I1215 09:26:53.368795 32133 net.cpp:436] norm1 <- conv1
I1215 09:26:53.368820 32133 net.cpp:410] norm1 -> norm1
I1215 09:26:53.368860 32133 net.cpp:152] Setting up norm1
I1215 09:26:53.368886 32133 net.cpp:159] Top shape: 10 96 55 55 (2904000)
I1215 09:26:53.368911 32133 net.cpp:167] Memory required for data: 41031480
I1215 09:26:53.368934 32133 layer_factory.hpp:77] Creating layer pool1
I1215 09:26:53.368963 32133 net.cpp:102] Creating Layer pool1
I1215 09:26:53.368984 32133 net.cpp:436] pool1 <- norm1
I1215 09:26:53.369009 32133 net.cpp:410] pool1 -> pool1
I1215 09:26:53.369052 32133 net.cpp:152] Setting up pool1
I1215 09:26:53.369077 32133 net.cpp:159] Top shape: 10 96 27 27 (699840)
I1215 09:26:53.369102 32133 net.cpp:167] Memory required for data: 43830840
I1215 09:26:53.369128 32133 layer_factory.hpp:77] Creating layer conv2
I1215 09:26:53.369156 32133 net.cpp:102] Creating Layer conv2
I1215 09:26:53.369179 32133 net.cpp:436] conv2 <- pool1
I1215 09:26:53.369204 32133 net.cpp:410] conv2 -> conv2
I1215 09:26:53.371105 32133 net.cpp:152] Setting up conv2
I1215 09:26:53.371148 32133 net.cpp:159] Top shape: 10 256 27 27 (1866240)
I1215 09:26:53.371177 32133 net.cpp:167] Memory required for data: 51295800
I1215 09:26:53.371214 32133 layer_factory.hpp:77] Creating layer relu2
I1215 09:26:53.371243 32133 net.cpp:102] Creating Layer relu2
I1215 09:26:53.371265 32133 net.cpp:436] relu2 <- conv2
I1215 09:26:53.371291 32133 net.cpp:397] relu2 -> conv2 (in-place)
I1215 09:26:53.371320 32133 net.cpp:152] Setting up relu2
I1215 09:26:53.371342 32133 net.cpp:159] Top shape: 10 256 27 27 (1866240)
I1215 09:26:53.371367 32133 net.cpp:167] Memory required for data: 58760760
I1215 09:26:53.371390 32133 layer_factory.hpp:77] Creating layer norm2
I1215 09:26:53.371417 32133 net.cpp:102] Creating Layer norm2
I1215 09:26:53.371439 32133 net.cpp:436] norm2 <- conv2
I1215 09:26:53.371464 32133 net.cpp:410] norm2 -> norm2
I1215 09:26:53.371493 32133 net.cpp:152] Setting up norm2
I1215 09:26:53.371517 32133 net.cpp:159] Top shape: 10 256 27 27 (1866240)
I1215 09:26:53.371543 32133 net.cpp:167] Memory required for data: 66225720
I1215 09:26:53.371565 32133 layer_factory.hpp:77] Creating layer pool2
I1215 09:26:53.371598 32133 net.cpp:102] Creating Layer pool2
I1215 09:26:53.371620 32133 net.cpp:436] pool2 <- norm2
I1215 09:26:53.371644 32133 net.cpp:410] pool2 -> pool2
I1215 09:26:53.371676 32133 net.cpp:152] Setting up pool2
I1215 09:26:53.371700 32133 net.cpp:159] Top shape: 10 256 13 13 (432640)
I1215 09:26:53.371724 32133 net.cpp:167] Memory required for data: 67956280
I1215 09:26:53.371747 32133 layer_factory.hpp:77] Creating layer conv3
I1215 09:26:53.371780 32133 net.cpp:102] Creating Layer conv3
I1215 09:26:53.371804 32133 net.cpp:436] conv3 <- pool2
I1215 09:26:53.371829 32133 net.cpp:410] conv3 -> conv3
I1215 09:26:53.377588 32133 net.cpp:152] Setting up conv3
I1215 09:26:53.377777 32133 net.cpp:159] Top shape: 10 384 13 13 (648960)
I1215 09:26:53.377840 32133 net.cpp:167] Memory required for data: 70552120
I1215 09:26:53.377902 32133 layer_factory.hpp:77] Creating layer relu3
I1215 09:26:53.377997 32133 net.cpp:102] Creating Layer relu3
I1215 09:26:53.378078 32133 net.cpp:436] relu3 <- conv3
I1215 09:26:53.378159 32133 net.cpp:397] relu3 -> conv3 (in-place)
I1215 09:26:53.378234 32133 net.cpp:152] Setting up relu3
I1215 09:26:53.378285 32133 net.cpp:159] Top shape: 10 384 13 13 (648960)
I1215 09:26:53.378334 32133 net.cpp:167] Memory required for data: 73147960
I1215 09:26:53.378379 32133 layer_factory.hpp:77] Creating layer conv4
I1215 09:26:53.378434 32133 net.cpp:102] Creating Layer conv4
I1215 09:26:53.378479 32133 net.cpp:436] conv4 <- conv3
I1215 09:26:53.378536 32133 net.cpp:410] conv4 -> conv4
I1215 09:26:53.383319 32133 net.cpp:152] Setting up conv4
I1215 09:26:53.383429 32133 net.cpp:159] Top shape: 10 384 13 13 (648960)
I1215 09:26:53.383512 32133 net.cpp:167] Memory required for data: 75743800
I1215 09:26:53.383582 32133 layer_factory.hpp:77] Creating layer relu4
I1215 09:26:53.383652 32133 net.cpp:102] Creating Layer relu4
I1215 09:26:53.383699 32133 net.cpp:436] relu4 <- conv4
I1215 09:26:53.383755 32133 net.cpp:397] relu4 -> conv4 (in-place)
I1215 09:26:53.383810 32133 net.cpp:152] Setting up relu4
I1215 09:26:53.383854 32133 net.cpp:159] Top shape: 10 384 13 13 (648960)
I1215 09:26:53.383904 32133 net.cpp:167] Memory required for data: 78339640
I1215 09:26:53.383949 32133 layer_factory.hpp:77] Creating layer conv5
I1215 09:26:53.384004 32133 net.cpp:102] Creating Layer conv5
I1215 09:26:53.384049 32133 net.cpp:436] conv5 <- conv4
I1215 09:26:53.384097 32133 net.cpp:410] conv5 -> conv5
I1215 09:26:53.387358 32133 net.cpp:152] Setting up conv5
I1215 09:26:53.387455 32133 net.cpp:159] Top shape: 10 256 13 13 (432640)
I1215 09:26:53.387521 32133 net.cpp:167] Memory required for data: 80070200
I1215 09:26:53.387584 32133 layer_factory.hpp:77] Creating layer relu5
I1215 09:26:53.387639 32133 net.cpp:102] Creating Layer relu5
I1215 09:26:53.387686 32133 net.cpp:436] relu5 <- conv5
I1215 09:26:53.387734 32133 net.cpp:397] relu5 -> conv5 (in-place)
I1215 09:26:53.387786 32133 net.cpp:152] Setting up relu5
I1215 09:26:53.387831 32133 net.cpp:159] Top shape: 10 256 13 13 (432640)
I1215 09:26:53.387878 32133 net.cpp:167] Memory required for data: 81800760
I1215 09:26:53.387923 32133 layer_factory.hpp:77] Creating layer pool5
I1215 09:26:53.387980 32133 net.cpp:102] Creating Layer pool5
I1215 09:26:53.388028 32133 net.cpp:436] pool5 <- conv5
I1215 09:26:53.388092 32133 net.cpp:410] pool5 -> pool5
I1215 09:26:53.388152 32133 net.cpp:152] Setting up pool5
I1215 09:26:53.388198 32133 net.cpp:159] Top shape: 10 256 6 6 (92160)
I1215 09:26:53.388248 32133 net.cpp:167] Memory required for data: 82169400
I1215 09:26:53.388291 32133 layer_factory.hpp:77] Creating layer fc6
I1215 09:26:53.388347 32133 net.cpp:102] Creating Layer fc6
I1215 09:26:53.388396 32133 net.cpp:436] fc6 <- pool5
I1215 09:26:53.388442 32133 net.cpp:410] fc6 -> fc6
I1215 09:26:53.689764 32133 net.cpp:152] Setting up fc6
I1215 09:26:53.689859 32133 net.cpp:159] Top shape: 10 4096 (40960)
I1215 09:26:53.690049 32133 net.cpp:167] Memory required for data: 82333240
I1215 09:26:53.690106 32133 layer_factory.hpp:77] Creating layer relu6
I1215 09:26:53.690170 32133 net.cpp:102] Creating Layer relu6
I1215 09:26:53.690201 32133 net.cpp:436] relu6 <- fc6
I1215 09:26:53.690232 32133 net.cpp:397] relu6 -> fc6 (in-place)
I1215 09:26:53.690279 32133 net.cpp:152] Setting up relu6
I1215 09:26:53.690304 32133 net.cpp:159] Top shape: 10 4096 (40960)
I1215 09:26:53.690330 32133 net.cpp:167] Memory required for data: 82497080
I1215 09:26:53.690351 32133 layer_factory.hpp:77] Creating layer drop6
I1215 09:26:53.693316 32133 net.cpp:102] Creating Layer drop6
I1215 09:26:53.693377 32133 net.cpp:436] drop6 <- fc6
I1215 09:26:53.693405 32133 net.cpp:397] drop6 -> fc6 (in-place)
I1215 09:26:53.693439 32133 net.cpp:152] Setting up drop6
I1215 09:26:53.693538 32133 net.cpp:159] Top shape: 10 4096 (40960)
I1215 09:26:53.693567 32133 net.cpp:167] Memory required for data: 82660920
I1215 09:26:53.693588 32133 layer_factory.hpp:77] Creating layer fc7
I1215 09:26:53.693626 32133 net.cpp:102] Creating Layer fc7
I1215 09:26:53.693650 32133 net.cpp:436] fc7 <- fc6
I1215 09:26:53.693680 32133 net.cpp:410] fc7 -> fc7
I1215 09:26:53.799263 32133 net.cpp:152] Setting up fc7
I1215 09:26:53.799368 32133 net.cpp:159] Top shape: 10 4096 (40960)
I1215 09:26:53.799446 32133 net.cpp:167] Memory required for data: 82824760
I1215 09:26:53.799520 32133 layer_factory.hpp:77] Creating layer relu7
I1215 09:26:53.799582 32133 net.cpp:102] Creating Layer relu7
I1215 09:26:53.799638 32133 net.cpp:436] relu7 <- fc7
I1215 09:26:53.799741 32133 net.cpp:397] relu7 -> fc7 (in-place)
I1215 09:26:53.799799 32133 net.cpp:152] Setting up relu7
I1215 09:26:53.799854 32133 net.cpp:159] Top shape: 10 4096 (40960)
I1215 09:26:53.799916 32133 net.cpp:167] Memory required for data: 82988600
I1215 09:26:53.799971 32133 layer_factory.hpp:77] Creating layer drop7
I1215 09:26:53.800029 32133 net.cpp:102] Creating Layer drop7
I1215 09:26:53.800083 32133 net.cpp:436] drop7 <- fc7
I1215 09:26:53.800139 32133 net.cpp:397] drop7 -> fc7 (in-place)
I1215 09:26:53.800194 32133 net.cpp:152] Setting up drop7
I1215 09:26:53.800245 32133 net.cpp:159] Top shape: 10 4096 (40960)
I1215 09:26:53.800302 32133 net.cpp:167] Memory required for data: 83152440
I1215 09:26:53.800354 32133 layer_factory.hpp:77] Creating layer fc8
I1215 09:26:53.800408 32133 net.cpp:102] Creating Layer fc8
I1215 09:26:53.800452 32133 net.cpp:436] fc8 <- fc7
I1215 09:26:53.800511 32133 net.cpp:410] fc8 -> fc8
I1215 09:26:53.828145 32133 net.cpp:152] Setting up fc8
I1215 09:26:53.828259 32133 net.cpp:159] Top shape: 10 1000 (10000)
I1215 09:26:53.828338 32133 net.cpp:167] Memory required for data: 83192440
I1215 09:26:53.828399 32133 layer_factory.hpp:77] Creating layer prob
I1215 09:26:53.828472 32133 net.cpp:102] Creating Layer prob
I1215 09:26:53.828531 32133 net.cpp:436] prob <- fc8
I1215 09:26:53.828591 32133 net.cpp:410] prob -> prob
I1215 09:26:53.879479 32133 net.cpp:152] Setting up prob
I1215 09:26:53.879539 32133 net.cpp:159] Top shape: 10 1000 (10000)
I1215 09:26:53.879568 32133 net.cpp:167] Memory required for data: 83232440
I1215 09:26:53.879590 32133 net.cpp:230] prob does not need backward computation.
I1215 09:26:53.879612 32133 net.cpp:230] fc8 does not need backward computation.
I1215 09:26:53.879633 32133 net.cpp:230] drop7 does not need backward computation.
I1215 09:26:53.879653 32133 net.cpp:230] relu7 does not need backward computation.
I1215 09:26:53.879673 32133 net.cpp:230] fc7 does not need backward computation.
I1215 09:26:53.879762 32133 net.cpp:230] drop6 does not need backward computation.
I1215 09:26:53.879791 32133 net.cpp:230] relu6 does not need backward computation.
I1215 09:26:53.879813 32133 net.cpp:230] fc6 does not need backward computation.
I1215 09:26:53.879833 32133 net.cpp:230] pool5 does not need backward computation.
I1215 09:26:53.879854 32133 net.cpp:230] relu5 does not need backward computation.
I1215 09:26:53.879875 32133 net.cpp:230] conv5 does not need backward computation.
I1215 09:26:53.879896 32133 net.cpp:230] relu4 does not need backward computation.
I1215 09:26:53.879916 32133 net.cpp:230] conv4 does not need backward computation.
I1215 09:26:53.879937 32133 net.cpp:230] relu3 does not need backward computation.
I1215 09:26:53.879957 32133 net.cpp:230] conv3 does not need backward computation.
I1215 09:26:53.879977 32133 net.cpp:230] pool2 does not need backward computation.
I1215 09:26:53.879998 32133 net.cpp:230] norm2 does not need backward computation.
I1215 09:26:53.880022 32133 net.cpp:230] relu2 does not need backward computation.
I1215 09:26:53.880043 32133 net.cpp:230] conv2 does not need backward computation.
I1215 09:26:53.880064 32133 net.cpp:230] pool1 does not need backward computation.
I1215 09:26:53.880084 32133 net.cpp:230] norm1 does not need backward computation.
I1215 09:26:53.880172 32133 net.cpp:230] relu1 does not need backward computation.
I1215 09:26:53.880193 32133 net.cpp:230] conv1 does not need backward computation.
I1215 09:26:53.880213 32133 net.cpp:230] data does not need backward computation.
I1215 09:26:53.880234 32133 net.cpp:272] This network produces output prob
I1215 09:26:53.880275 32133 net.cpp:285] Network initialization done.
I1215 09:26:53.880470 32133 caffe.cpp:355] Performing Forward
I1215 09:27:46.035159 32133 caffe.cpp:360] Initial loss: 0
I1215 09:27:46.094864 32133 caffe.cpp:361] Performing Backward
I1215 09:27:46.094907 32133 caffe.cpp:369] *** Benchmark begins ***
I1215 09:27:46.094930 32133 caffe.cpp:370] Testing for 1 iterations.
I1215 09:29:16.923095 32133 caffe.cpp:398] Iteration: 1 forward-backward time: 90820 ms.
I1215 09:29:16.926890 32133 caffe.cpp:401] Average time per layer:
I1215 09:29:16.926941 32133 caffe.cpp:404]       data	forward: 2.409 ms.
I1215 09:29:16.926988 32133 caffe.cpp:407]       data	backward: 3.374 ms.
I1215 09:29:16.927022 32133 caffe.cpp:404]      conv1	forward: 5822.64 ms.
I1215 09:29:16.927057 32133 caffe.cpp:407]      conv1	backward: 5378.9 ms.
I1215 09:29:16.927096 32133 caffe.cpp:404]      relu1	forward: 20.339 ms.
I1215 09:29:16.927129 32133 caffe.cpp:407]      relu1	backward: 0.006 ms.
I1215 09:29:16.927158 32133 caffe.cpp:404]      norm1	forward: 224.839 ms.
I1215 09:29:16.927189 32133 caffe.cpp:407]      norm1	backward: 306.583 ms.
I1215 09:29:16.927227 32133 caffe.cpp:404]      pool1	forward: 92.881 ms.
I1215 09:29:16.927258 32133 caffe.cpp:407]      pool1	backward: 0.007 ms.
I1215 09:29:16.927289 32133 caffe.cpp:404]      conv2	forward: 12404 ms.
I1215 09:29:16.927323 32133 caffe.cpp:407]      conv2	backward: 11476.4 ms.
I1215 09:29:16.927355 32133 caffe.cpp:404]      relu2	forward: 14.439 ms.
I1215 09:29:16.927390 32133 caffe.cpp:407]      relu2	backward: 0.006 ms.
I1215 09:29:16.927428 32133 caffe.cpp:404]      norm2	forward: 145.904 ms.
I1215 09:29:16.927464 32133 caffe.cpp:407]      norm2	backward: 200.542 ms.
I1215 09:29:16.927495 32133 caffe.cpp:404]      pool2	forward: 48.844 ms.
I1215 09:29:16.927528 32133 caffe.cpp:407]      pool2	backward: 0.014 ms.
I1215 09:29:16.927561 32133 caffe.cpp:404]      conv3	forward: 7722.6 ms.
I1215 09:29:16.927593 32133 caffe.cpp:407]      conv3	backward: 7236.33 ms.
I1215 09:29:16.927629 32133 caffe.cpp:404]      relu3	forward: 4.984 ms.
I1215 09:29:16.927660 32133 caffe.cpp:407]      relu3	backward: 0.007 ms.
I1215 09:29:16.927693 32133 caffe.cpp:404]      conv4	forward: 6952.48 ms.
I1215 09:29:16.927726 32133 caffe.cpp:407]      conv4	backward: 5967.02 ms.
I1215 09:29:16.927760 32133 caffe.cpp:404]      relu4	forward: 3.584 ms.
I1215 09:29:16.927790 32133 caffe.cpp:407]      relu4	backward: 0.013 ms.
I1215 09:29:16.927821 32133 caffe.cpp:404]      conv5	forward: 4369.66 ms.
I1215 09:29:16.927860 32133 caffe.cpp:407]      conv5	backward: 4093.51 ms.
I1215 09:29:16.927889 32133 caffe.cpp:404]      relu5	forward: 3.763 ms.
I1215 09:29:16.927922 32133 caffe.cpp:407]      relu5	backward: 0.009 ms.
I1215 09:29:16.927953 32133 caffe.cpp:404]      pool5	forward: 31.188 ms.
I1215 09:29:16.927984 32133 caffe.cpp:407]      pool5	backward: 0.013 ms.
I1215 09:29:16.928019 32133 caffe.cpp:404]        fc6	forward: 9213.61 ms.
I1215 09:29:16.928052 32133 caffe.cpp:407]        fc6	backward: 2320.18 ms.
I1215 09:29:16.928086 32133 caffe.cpp:404]      relu6	forward: 0.21 ms.
I1215 09:29:16.928115 32133 caffe.cpp:407]      relu6	backward: 0.006 ms.
I1215 09:29:16.928148 32133 caffe.cpp:404]      drop6	forward: 0.918 ms.
I1215 09:29:16.928181 32133 caffe.cpp:407]      drop6	backward: 0.007 ms.
I1215 09:29:16.928211 32133 caffe.cpp:404]        fc7	forward: 4274.53 ms.
I1215 09:29:16.928246 32133 caffe.cpp:407]        fc7	backward: 1103.53 ms.
I1215 09:29:16.928277 32133 caffe.cpp:404]      relu7	forward: 0.204 ms.
I1215 09:29:16.928306 32133 caffe.cpp:407]      relu7	backward: 0.005 ms.
I1215 09:29:16.928341 32133 caffe.cpp:404]      drop7	forward: 0.875 ms.
I1215 09:29:16.928371 32133 caffe.cpp:407]      drop7	backward: 0.006 ms.
I1215 09:29:16.928405 32133 caffe.cpp:404]        fc8	forward: 1060.88 ms.
I1215 09:29:16.928437 32133 caffe.cpp:407]        fc8	backward: 315.18 ms.
I1215 09:29:16.928475 32133 caffe.cpp:404]       prob	forward: 1.568 ms.
I1215 09:29:16.928506 32133 caffe.cpp:407]       prob	backward: 1.012 ms.
I1215 09:29:16.928542 32133 caffe.cpp:412] Average Forward pass: 52417.7 ms.
I1215 09:29:16.928567 32133 caffe.cpp:414] Average Backward pass: 38403 ms.
I1215 09:29:16.928594 32133 caffe.cpp:416] Average Forward-Backward: 90826 ms.
I1215 09:29:16.928622 32133 caffe.cpp:418] Total Time: 90826 ms.
I1215 09:29:16.928650 32133 caffe.cpp:419] *** Benchmark ends ***
*** Aborted at<PHONE_NUMBER> (unix time) try "date -d @1481768956" if you are using GNU date ***
PC: @        0x0 (unknown)
Segmentation fault

I've applied several tests more and found sequence:

Segmentation fault (2 - 10 times) no logs just error
"terminate called after throwing an instance of 'std::length_error"  (2 - 10 times) - create log file with same error
works fine just after the error above but it's not stable

So at least I know it works for android but not stable. Will drill down in to debugging ...

Most Segmentation fault  for arm-v7a is
#06 pc<PHONE_NUMBER>1d3750  /data/local/tmp/caffe_ck/libcaffe.so (caffe::GlobalInit(int*, char***)+6)
And for arm64 almost the same, I've got no any successfull run for all tries got same error:
12-15 10:26:35.796 26977-26977/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x5563c00dd8 in tid 26977 (caffe)
12-15 10:26:35.798 26996-26996/? I/AEE/AED: check process 26977 name:caffe
12-15 10:26:35.799 26996-26996/? I/AEE/AED: [OnPurpose Redunant in void preset_info(aed_report_record*, int, int)] pid: 26977, tid: 26977, name: caffe  >>> ./caffe <<<
12-15 10:26:35.929 26996-26996/? I/AEE/AED: pid: 26977, tid: 26977, name: caffe  >>> ./caffe <<<
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #02 pc<PHONE_NUMBER>806494  /data/local/tmp/caffe_ck/libcaffe.so
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #03 pc<PHONE_NUMBER>355b0c  /data/local/tmp/caffe_ck/libcaffe.so
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #04 pc<PHONE_NUMBER>35c36c  /data/local/tmp/caffe_ck/libcaffe.so
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #05 pc<PHONE_NUMBER>35ea60  /data/local/tmp/caffe_ck/libcaffe.so
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #06 pc<PHONE_NUMBER>1d3750  /data/local/tmp/caffe_ck/libcaffe.so (caffe::GlobalInit(int*, char***)+16)
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #07 pc<PHONE_NUMBER>00bf88  /data/local/tmp/caffe_ck/caffe (main+168)
12-15 10:26:35.939 26996-26996/? I/AEE/AED:     #09 pc<PHONE_NUMBER>00cbbc  /data/local/tmp/caffe_ck/caffe

So detailed debug info:
12-15 10:59:02.043 16358-16358/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8f97e820 in tid 16358 (caffe)
12-15 10:59:02.183 2855-2855/? I/DEBUG: pid: 16358, tid: 16358, name: caffe  >>> ./caffe <<<
12-15 10:59:02.208 2855-2855/? I/DEBUG:     #02 pc 004ee66f  /data/local/tmp/caffe_alib/libcaffe.so (operator delete(void*)+2)
12-15 10:59:02.208 2855-2855/? I/DEBUG:     #03 pc 0050ed67  /data/local/tmp/caffe_alib/libcaffe.so (std::string::assign(std::string const&)+78)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #04 pc 0025c371  /data/local/tmp/caffe_alib/libcaffe.so (google::(anonymous namespace)::TryParseLocked(google::(anonymous namespace)::CommandLineFlag const*, google::(anonymous namespace)::FlagValue*, char const*, std::string*)+452)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #05 pc 0025f56d  /data/local/tmp/caffe_alib/libcaffe.so (google::(anonymous namespace)::CommandLineFlagParser::ProcessSingleOptionLocked(google::(anonymous namespace)::CommandLineFlag*, char const*, google::FlagSettingMode)+188)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #06 pc 00260cc7  /data/local/tmp/caffe_alib/libcaffe.so (google::ParseCommandLineFlagsInternal(int*, char***, bool, bool)+310)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #07 pc 002618f9  /data/local/tmp/caffe_alib/libcaffe.so (google::ParseCommandLineFlags(int*, char***, bool)+4)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #08 pc 00145cb7  /data/local/tmp/caffe_alib/libcaffe.so (caffe::GlobalInit(int*, char***)+6)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #09 pc 00008037  /data/local/tmp/caffe_alib/caffe (main+110)
12-15 10:59:02.213 2855-2855/? I/DEBUG:     #11 pc 00008aec  /data/local/tmp/caffe_alib/caffe (_start+88)

shows problem with memory at  /gflags/src/gflags.cc TryParseLocked
delete tentative_value;
Now I'm in progress to fix it...

I've compiled and configured  valgrind for android app
and run so get some more details about crushing:
==7273== Invalid free() / delete / delete[] / realloc()
==7273==    at 0x481A31C: operator delete(void*) (vg_replace_malloc.c:576)
==7273==    by 0x4DD1F69: deallocate (new_allocator.h:116)
==7273==    by 0x4DD1F69: _M_destroy (basic_string.tcc:449)
==7273==    by 0x4DD1F69: _M_dispose (basic_string.h:249)
==7273==    by 0x4DD1F69: std::string::assign(std::string const&) (basic_string.tcc:250)
==7273==    by 0x4B1E4A1: google::(anonymous namespace)::FlagValue::CopyFrom(google::(anonymous namespace)::FlagValue const&) [clone .isra.78] (in /data/local/tmp/caffe_lib/libcaffe.so)
==7273==  Address 0x1400ec is 0 bytes inside data symbol "_ZNSs4_Rep20_S_empty_rep_storageE"
==7273==

I've excluded gflag usage from caffe and it works fine now on android.
I'll separate caffe-time-android program to ck-caffe

So rest issues here are:

remove hardcoded itrations = 1 from caffe-tim.cpp
find out why model is not pushed like other files to android tmp dir
check caffe-time with fresh caffe from master
check caffe-time with fresh caffe from openclbranch
add gpu support back to caffe-time (own param without gflag)

I will help with model not being pushed to Android - there is some missing functionality in CK related to Android which I will try to add soon ...

fixed at PR #14

remove hardcoded itrations = 1 from caffe-tim.cpp
add xopenme fine grain timers

so caffe-time with proto 3.1.0 works fine now and print fine grain timers (could be modified later for example per layer)

find out why model is not pushed like other files to android tmp dir
I've been trying to add adb push deploy.prototxt ... command like for image.jpg
but I see image.jpg is data set at ck-autotuning
and model with file deploy.prototxt is package at ck-caffe
I'm in progress with solving

check caffe-time with fresh  BLVC/caffe master
compilation fails with (in progress with solving)
Could NOT find HDF5 (missing: HDF5_LIBRARIES HDF5_INCLUDE_DIRS)

check caffe-time with fresh BLVC/caffe from opencl branch
compilation fails with same error (in progress with solving)
Could NOT find HDF5 (missing: HDF5_LIBRARIES HDF5_INCLUDE_DIRS)

So fresh caffe version with android support works fine now
to check need to modify CK/ck-caffe/package/lib-caffe-bvlc-master-cpu-android/.cm/meta.json using my fork with branch cmake_android:
    "install_env": {
      "PACKAGE_BRANCH": "cmake_android",
      "PACKAGE_URL": "https://github.com/DVEfremov/caffe"
    },

Also need to modify meta to use "lib,protobuf, 3.1.0"
    "lib-protobuf": {
      "local": "yes",
      "name": "ProtoBuf library",
      "skip_default": "yes",
      "sort": 9,
      "tags": "lib,protobu, v3.1.0"
    },

Looks like we can close this issue ...
Just after PR #18

We can now run caffe-time and caffe-classification via CK on Android (using both Linux and Windows as host), so I close this ticket.