Commit Graph

25 Commits

Author SHA1 Message Date
Herman Chen
8108bf58ea fix[osal]: Fix mpp_mem single instance issue
When another C++ static global object init before the mpp_mem service
the MppService service will be inited twice. Then on object destroy will
deinit service twice and cause mutex double delete issue.

On init

E mpp_mem : MppMemService start 0 0x7c536619e8
I mpp_mem : MppMemService mpp_mem_debug enabled 3 max node 1024
E mpp_mem : MppMemService start 1 0x5e8d724230
I mpp_mem : MppMemService mpp_mem_debug enabled 3 max node 1024

On destory

05-17 09:58:04.743  2576  2576 E mpp_mem : ~MppMemService enter 0 0x5e8d724230
05-17 09:58:04.743  2576  2576 E mpp_mem : ~MppMemService enter 1 0x7c536619e8
05-17 09:58:04.743  2576  2576 E mpp_mem : mpp_osal_free

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'rockchip/rk3576_t/rk3576_t:13/TQ3C.230805.001.B2/eng.kenjc.20240510.161710:userdebug/release-keys'
Revision: '0'
ABI: 'arm64'
Timestamp: 2024-05-17 09:58:04.800905936+0000
Process uptime: 1s
Cmdline: mpp_trie_test
pid: 2576, tid: 2576, name: mpp_trie_test  >>> mpp_trie_test <<<
uid: 0
tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
Abort message: 'FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x5e8d724230)'
    x0  0000000000000000  x1  0000000000000a10  x2  0000000000000006  x3  0000007fd26f05d0
    x4  0000000000008080  x5  0000000000008080  x6  0000000000008080  x7  8080000000000000
    x8  00000000000000f0  x9  0000007c50d22a00  x10 0000000000000001  x11 0000007c50d60de4
    x12 0101010101010101  x13 000000007fffffff  x14 000000000001ffea  x15 0000000000000078
    x16 0000007c50dc5d58  x17 0000007c50da2c70  x18 0000007c55b38000  x19 0000000000000a10
    x20 0000000000000a10  x21 00000000ffffffff  x22 0000000000001000  x23 0000005e8d724230
    x24 0000007c5489e010  x25 0000005e8d70c060  x26 0000000000000002  x27 0000007c513226e8
    x28 0000000000000000  x29 0000007fd26f0650
    lr  0000007c50d52968  sp  0000007fd26f05b0  pc  0000007c50d52994  pst 0000000000000000
backtrace:
      #00 pc 0000000000051994  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 4e07915368c859b1910c68c84a8de75f)
      #01 pc 000000000005363c  /apex/com.android.runtime/lib64/bionic/libc.so (__fortify_fatal(char const*, ...)+124) (BuildId: 4e07915368c859b1910c68c84a8de75f)
      #02 pc 00000000000b74cc  /apex/com.android.runtime/lib64/bionic/libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*, char const*)+60) (BuildId: 4e07915368c859b1910c68c84a8de75f)
      #03 pc 00000000000b735c  /apex/com.android.runtime/lib64/bionic/libc.so (pthread_mutex_lock+240) (BuildId: 4e07915368c859b1910c68c84a8de75f)
      #04 pc 0000000000048290  /system/bin/mpp_trie_test (mpp_osal_free+108) (BuildId: 55dca41ecc701b3ad16f0ef02270a45ce40533ff)
      #05 pc 0000000000041080  /system/bin/mpp_trie_test (MppMemPoolService::~MppMemPoolService()+32) (BuildId: 55dca41ecc701b3ad16f0ef02270a45ce40533ff)
      #06 pc 00000000000b9ca4  /apex/com.android.runtime/lib64/bionic/libc.so (__cxa_finalize+280) (BuildId: 4e07915368c859b1910c68c84a8de75f)
      #07 pc 00000000000ac944  /apex/com.android.runtime/lib64/bionic/libc.so (exit+24) (BuildId: 4e07915368c859b1910c68c84a8de75f)
      #08 pc 000000000004a1f8  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+100) (BuildId: 4e07915368c859b1910c68c84a8de75f)

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I81ead0f796ba6e26b520a87ae69cc8f7f6e816f4
2024-08-16 09:53:55 +08:00
Herman Chen
dbdccc6818 fix[mpp_mem]: Fix MEM_ALIGNED macro error
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I08d403f7e1d67b7d80655278255f31d4c0c6784e
2023-11-27 14:59:04 +08:00
Herman Chen
2b35cee0ce [mpp_log]: Add more log helper function
1. Move mpp_log.h to inc for external user.
2. Add mpp_debug.h for mpp internal logging.
3. Fix some warning.
4. Add log level setup function.
5. Check env log_level value in mpp_get_log_level call.

NOTE:
1. mpp internal module should use mpp_debug.h and mpp external user
should use mpp_log.h
2. Use mpp_get_log_level to update mpp_log_level when the env changed.

Change-Id: I90a55a02a72db177533013280dfe111ca3479229
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2022-05-20 11:42:10 +08:00
Herman Chen
a4a9effd33 [mpp_mem]: Reduce mutex lock range
Change-Id: Ic70f0d66ad20878bca0b4ad3a5d5e933f96ca4b3
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2021-04-22 16:37:16 +08:00
Herman Chen
a91439bef4 [mpp_buffer]: Add mem and buffer usage function
Change-Id: I356ef9311802868fe8d234dbff178ad8463985d0
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2021-04-20 14:39:52 +08:00
Randy Li
6fe240a469 [oasl]: fix the mem debug condition
Change-Id: Id790199e3a32a9ca93bcb382f473aa59c28c0ecc
Signed-off-by: Randy Li <randy.li@rock-chips.com>
2018-07-16 18:03:50 +08:00
Herman Chen
e4d6d81287 [mpp_mem]: Add error log for mpp mem debug
When mpp_mem debug is enabled there is limit for recording mpp_mem
usage. But there is NO obvious log when this limit is reached.

This case will easily happen on multi-instance decoding in one process.
We add obvious log when this case happen.

Change-Id: Ic9160766d4499d442c25fdefae00231d15d71359
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2018-03-26 15:41:29 +08:00
Herman Chen
a00b980a71 [mpp_mem]: Fix print error on mpp_mem leak check
Change-Id: I97d7c34034084aed4dfda064b113386d6dede8a8
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2018-03-26 10:22:06 +08:00
Herman Chen
82bc016bbb [oasl]: Add debug function to mpp_mem
1. Add memory node record.
2. Add runtime log with memory count and total size.
3. Add extra room for overflow detection.
4. Add memory poison after free to detect write after free.

Change-Id: I4f0fe7295f18a746c3b4c135681127a18337585e
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2018-01-29 11:47:31 +08:00
Lin Kesheng
60373a6973 [all]: format code
use fromdos to change file type, remove ^M in code.

Change-Id: I000202dc51fcff57cc0771455baebea595115b1d
Signed-off-by: Lin Kesheng <lks@rock-chips.com>
2016-09-08 15:21:02 +08:00
ChenHengming
d101052f9b [osal]: add runtime log to mpp_mem
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@1131 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-07-30 08:56:41 +00:00
ChenHengming
4201f689c0 [format]: format coding style
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@907 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-06-13 09:47:19 +00:00
ChenHengming
c0866a76f9 [comment]: fix company name hand writing error
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@906 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-06-13 09:42:31 +00:00
ChenHengming
00726d2a77 [mpp_mem]: Add mpp memory snapshot function
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@717 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-05-10 11:36:29 +00:00
ChenHengming
49a418e1b1 [lock]: use AutoMutex to replace Mutex::Autolock
[mpp_mem]: add lock to mem_list and add dump memory status function

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@526 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-01-14 07:24:12 +00:00
ChenHengming
1e60d55e70 [mpp_mem]: use snprintf to avoid NULL pointer
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@525 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-01-14 04:38:12 +00:00
ChenHengming
5824f9120c [mpp_mem]: fix realloc function
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@175 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-28 02:07:32 +00:00
ChenHengming
c0b913d3b9 [mpp_buffer_impl]: add MppBufferGroup module to mpp_buffer_impl
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@122 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-18 12:57:16 +00:00
ChenHengming
4ccc9a2342 [mpp_mem]: fix MODULE_TAG
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@121 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-18 06:07:49 +00:00
ChenHengming
c2544d0f9c [mpi]: add mpi unit test and rename mpp_env interface
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@116 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-17 10:09:20 +00:00
ChenHengming
70671a1cca [osal]: add const modifier to remove warning
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@113 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-17 09:14:05 +00:00
ChenHengming
63880b5333 [osal]: add mpp_calloc function
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@101 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-13 09:30:27 +00:00
ChenHengming
e07bf014e2 [osal]: rename os_malloc.h to os_mem.h
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@99 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-13 09:22:51 +00:00
ChenHengming
e80180c728 [mpp_mem]: add mpp_realloc function
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@98 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-13 09:15:31 +00:00
ChenHengming
c35cc7d345 [osal]: rename mpp_malloc to mpp_mem, add mpp_time function
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@63 6e48237b-75ef-9749-8fc9-41990f28c85a
2015-08-07 10:15:24 +00:00