Browse Source

add crash signal

DevYK 3 years ago
parent
commit
f609599270
3 changed files with 99 additions and 4 deletions
  1. 18 0
      scp.sh
  2. 80 4
      src/utils/video_similarity.cpp
  3. 1 0
      src/video_similarity_comparison.cpp

+ 18 - 0
scp.sh

@@ -0,0 +1,18 @@
+#!/bin/zsh
+
+cd ~/.ssh
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/video/E4098FAAAC8FB17391BB5666C674233F.mp4 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/video/53F21A4848B76E728F53664EA6956DA2.mp4 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/video/ADD7219E9901940130FC3BA9428E2D66.mp4 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/video_tail/1920_1080.mp4 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+
+
+scp -i stuuudy.pem root@192.168.204.102:/datalog/ffmpeg_opencv/ /Users/devyk/Data/Project/sample/github_code/OpenCVSample/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/subtitle/04926EF1D22351B109135FF28CFC11DF /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/image/36934CCA1648AF86F3DC07E8796C77F3 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/image/CBA07E563326ECB56FC49E18615E3F63 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.202.43:/data/media/normal/mp3/99BF2BA9A2CE6918D835D1956A1C61B9.mp3 /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem root@192.168.205.54:/home/libpq-video-edit.so /Users/devyk/Data/Project/piaoquan/PQMedia/temp/
+#scp -i stuuudy.pem /Users/devyk/Data/Project/piaoquan/PQMedia/temp/1A807070C35A114262043023A7122D58.mp4 root@192.168.202.43:/root/wzh264/wz264_linux_shared_release_wzauth-56023e45/linux_shared_release_wzauth/bin
+
+#scp -i stuuudy.pem /Users/devyk/Data/Project/piaoquan/PQMedia/jni/out/production/jni.zip root@192.168.205.32:/root/memcheck

+ 80 - 4
src/utils/video_similarity.cpp

@@ -4,10 +4,84 @@
 
 #include <json/reader.h>
 #include <json/writer.h>
+#include <sys/stat.h>
 #include "video_similarity.h"
 
 
+const int MAX_STACK_FRAMES = 128;
+
+void sig_crash(int sig) {
+    FILE *fd;
+    struct stat buf;
+    stat("./crash.log", &buf);
+    if (buf.st_size > 10 * 1000 * 1000) { // 超过10兆则清空内容
+        fd = fopen("/datalog/crash.log", "w");
+    } else {
+        fd = fopen("/datalog/crash.log", "at");
+    }
+
+    if (NULL == fd) {
+        exit(0);
+    }
+    try {
+        char szLine[512] = {0,};
+        time_t t = time(NULL);
+        tm *now = localtime(&t);
+        int nLen1 = sprintf(szLine,
+                            "#########################################################\n[%04d-%02d-%02d %02d:%02d:%02d][crash signal number:%d]\n",
+                            now->tm_year + 1900,
+                            now->tm_mon + 1,
+                            now->tm_mday,
+                            now->tm_hour,
+                            now->tm_min,
+                            now->tm_sec,
+                            sig);
+        fwrite(szLine, 1, strlen(szLine), fd);
+#ifdef __linux
+        void* array[MAX_STACK_FRAMES];
+        size_t size = 0;
+        char** strings = NULL;
+        size_t i, j;
+        signal(sig, SIG_DFL);
+        size = backtrace(array, MAX_STACK_FRAMES);
+        strings = (char**)backtrace_symbols(array, size);
+        //fprintf(stderr, "oncrash;\n");
+        for (i = 0; i < size; ++i)
+        {
+            char szLine[512] = {0, };
+            sprintf(szLine, "%d %s\n", i, strings[i]);
+            fwrite(szLine, 1, strlen(szLine), fd);
+
+            std::string symbol(strings[i]);
+            size_t pos1 = symbol.find_first_of("[");
+            size_t pos2 = symbol.find_last_of("]");
+            std::string address = symbol.substr(pos1 + 1, pos2 - pos1 -1);
+            char cmd[128] = {0, };
+            sprintf(cmd, "addr2line -e test %s", address.c_str()); // test为应用程序名称,需要改为用户自己的应用程序名
+            FILE *fPipe = popen(cmd, "r");
+            if(fPipe != NULL){
+                char buff[1024];
+                memset(buff, 0, sizeof(buff));
+                char* ret = fgets(buff, sizeof(buff), fPipe);
+                pclose(fPipe);
+                fwrite(ret, 1, strlen(ret), fd);
+            }
+        }
+       free(strings);
+#endif // __linux
+    }catch (...) {
+        //
+    }
+    signal(sig, SIG_DFL);
+    fflush(fd);
+    fclose(fd);
+    fd = NULL;
+    exit(0);
+}
+
 long video_similarity_detection_init(const char *url) {
+    signal(SIGABRT, sig_crash);
+    signal(SIGSEGV, sig_crash);
     auto *ctx = (VideoSimilarityContext *) malloc(sizeof(VideoSimilarityContext));
     if (!ctx)return -1;
     memset(ctx, 0, sizeof(VideoSimilarityContext));
@@ -205,16 +279,18 @@ const char *get_video_similarity_list(const char *inputjson) {
             const char *name = GetFileName(((VideoSimilarityContext *) id)->video_path, n); //把字符串及其长度传给函数
             printf("%s\n", name); //name就是那个名称,可以输出
             char args[512];
-//            sprintf(args, "/Users/devyk/Data/Project/sample/github_code/OpenCVSample/temp/%s.log",name);
-            sprintf(args, "/datalog/ffmpeg_opencv/%s.log", name);
+            sprintf(args, "/Users/devyk/Data/Project/sample/github_code/OpenCVSample/temp/%s.log", name);
+//            sprintf(args, "/datalog/ffmpeg_opencv/%s.log", name);
             ((VideoSimilarityContext *) id)->log = fopen(args, "wb+");
             printf("args===%s \n", args);
             if (((VideoSimilarityContext *) id)->log)fprintf(((VideoSimilarityContext *) id)->log, inputjson);
         }
-        if (((VideoSimilarityContext *) id)->log)fprintf(((VideoSimilarityContext *) id)->log, "video_similarity_detection_start \n");
+        if (((VideoSimilarityContext *) id)->log)
+            fprintf(((VideoSimilarityContext *) id)->log, "video_similarity_detection_start \n");
         video_similarity_detection_start(id, 0, AUDIO,
                                          &vs->clips);
-        if (((VideoSimilarityContext *) id)->log)fprintf(((VideoSimilarityContext *) id)->log, "video_similarity_detection_start exit \n");
+        if (((VideoSimilarityContext *) id)->log)
+            fprintf(((VideoSimilarityContext *) id)->log, "video_similarity_detection_start exit \n");
         video_similarity_detection_close(id);
         ret_json = videoSimilarity2json(vs);
         delete vs;

+ 1 - 0
src/video_similarity_comparison.cpp

@@ -86,6 +86,7 @@ int main(int argc, char *argv[]) {
     inputs[2] = "{\"videoPath\":\"http://rescdn.yishihui.com/longvideo/transcode/video/528f2a602ed0422fa9227e2c943e861c-1526808744013-safe1594892695.m3u8\",\"clips\":[{\"startTimeMs\":1200,\"endTimeMs\":2200},{\"startTimeMs\":2400,\"endTimeMs\":3400},{\"startTimeMs\":3600,\"endTimeMs\":4600},{\"startTimeMs\":4800,\"endTimeMs\":5800},{\"startTimeMs\":6000,\"endTimeMs\":7000},{\"startTimeMs\":7200,\"endTimeMs\":8200},{\"startTimeMs\":8400,\"endTimeMs\":9400},{\"startTimeMs\":9600,\"endTimeMs\":10600}]}";
     inputs[3] = "{\"videoPath\":\"http://rescdn.yishihui.com/longvideo/transcode/video/df3eedcd69b84e3a8d91456423ea5b01-1526808529358-safe1594895173.m3u8\",\"clips\":[{\"startTimeMs\":2100,\"endTimeMs\":3100},{\"startTimeMs\":4200,\"endTimeMs\":5200},{\"startTimeMs\":6300,\"endTimeMs\":7300},{\"startTimeMs\":8400,\"endTimeMs\":9400},{\"startTimeMs\":10500,\"endTimeMs\":11500},{\"startTimeMs\":12600,\"endTimeMs\":13600},{\"startTimeMs\":14700,\"endTimeMs\":15700},{\"startTimeMs\":16800,\"endTimeMs\":17800}]}";
 
+
     for (;;) {
         CountDownLatch *countDownLatch = new CountDownLatch(4);
         for (int i = 0; i < 4; ++i) {