OEM Thread-1592 WARN http: snmehl_connect: connect failed to(oem不能重启解决)

本文详细记录了如何使用emctl工具监控Oracle数据库管理系统运行状态,包括终止异常进程和重启数据库控制台,确保系统稳定运行。

第一:

$ ps -ef |grep sysman

oracle 4452 1 0 04:57 pts/3 00:00:00 /u01/app/oracle/product/10.2.0/db_1/perl/bin/perl /u01/app/oracle/product/10.2.0/db_1/bin/emwd.pl dbconsole /u01/app/oracle/product/10.2.0/db_1/redhat4_aiki/sysman/log/emdb.nohup
oracle 4477 4452 12 04:57 pts/3 00:00:36 /u01/app/oracle/product/10.2.0/db_1/jdk/bin/java -server -Xmx256M -XX:MaxPermSize=96m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -DORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 -Doracle.home=/u01/app/oracle/product/10.2.0/db_1/oc4j -Doracle.oc4j.localhome=/u01/app/oracle/product/10.2.0/db_1/redhat4_aiki/sysman -DEMSTATE=/u01/app/oracle/product/10.2.0/db_1/redhat4_aiki -Doracle.j2ee.dont.use.memory.archive=true -Djava.protocol.handler.pkgs=HTTPClient -Doracle.security.jazn.config=/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_redhat4_aiki/config/jazn.xml -Djava.security.policy=/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_redhat4_aiki/config/java2.policy -Djava.security.properties=/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/home/config/jazn.security.props -DEMDROOT=/u01/app/oracle/product/10.2.0/db_1/redhat4_aiki -Dsysman.md5password=true -Drepapi.oracle.home=/u01/app/oracle/product/10.2.0/db_1 -Ddisable.checkForUpdate=true -Djava.awt.headless=true -jar /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/home/oc4j.jar -config /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_redhat4_aiki/config/server.xml

oracle 5894 3969 0 05:02 pts/3 00:00:00 grep sysman

第二:

kill -9 4452
kill -9 4477

第三:

再重启:emctl start dbconsole

正常;


sh-3.2# ./home/animation_demo USAGE: Choose one of the following options, then press enter: 'P' to toggle between PAUSE and PLAY 'S' to increase playback speed, 's' to decrease playback speed 'D' to toggle playback direction 'N' to move to next frame (in the current direction, better in PAUSE) 'Q' to quit Running...251 Pipeline state changed from NULL to READY: [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached Pipeline state changed from READY to PAUSED: Pipeline state changed from PAUSED to PLAYING: Seeking is ENABLED from 0:00:00.000000000 to 0:00:07.105306123 [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached [DMABUFHEAPS]OpenDmabufHeap: Using DMA-BUF heap named: mtk_mm-uncached End-Of-Stream reached.5464 / 0:00:07.170000000 (animation_demo:4695): GLib-CRITICAL **: 21:35:20.600: g_io_channel_unref: assertion 'channel != NULL' failed sh-3.2#
08-21
<think>我们正在处理一个关于animation_demo程序输出日志的问题,该程序使用DMA-BUF堆(特别是mtk_mm-uncached)和GStreamer管道。用户可能希望查看日志以了解程序运行情况或排查问题(如GLib错误)。由于这是一个特定的程序,我们可能没有直接的日志,但我们可以提供一般性的指导,帮助用户获取和分析日志。 ### 步骤1: 理解程序组件 - **DMA-BUF Heap (mtk_mm-uncached)**: 这是Android系统(特别是MediaTek平台)上的一种内存分配机制,用于分配非缓存内存,通常用于多媒体处理,以提高性能。 - **GStreamer**: 一个开源的多媒体框架,用于构建流媒体应用。它通常用于处理音频和视频的播放、转码、流传输等。 ### 步骤2: 获取程序日志 在Android环境下,获取程序日志的常用方法是通过`logcat`。用户可以通过ADB(Android Debug Bridge)连接到设备并捕获日志。 #### 基本命令 ```bash adb logcat -s "tag1" "tag2" ... ``` 其中,`tag`可以是程序相关的标签(如程序名、GStreamer标签等)。 由于用户程序名为`animation_demo`,我们可以使用该标签。同时,GStreamer相关的日志通常带有`GStreamer`或`gst`等标签。此外,GLib错误可能通过`GLib`标签记录。 因此,建议的命令是: ```bash adb logcat -s "animation_demo" "GStreamer" "gst" "GLib" "DMA-BUF" ``` #### 其他有用的参数 - `-v time`: 显示时间戳。 - `-c`: 清除之前的日志,然后开始新的捕获。 - `> log.txt`: 将日志输出到文件。 示例: ```bash adb logcat -c # 清除旧日志 adb logcat -v time -s "animation_demo" "GStreamer" "gst" "GLib" "DMA-BUF" > log.txt ``` ### 步骤3: 分析日志中的关键信息 在获取日志后,可以查找以下关键信息: 1. **程序启动信息**:查看`animation_demo`的启动过程,确认是否成功初始化。 2. **DMA-BUF Heap分配**:查找与`mtk_mm-uncached`相关的分配信息,如分配成功或失败。 3. **GStreamer管道**:检查GStreamer管道的构建和状态(如PLAYING、PAUSED、ERROR)。注意错误消息(如`ERROR`、`WARNING`)和调试信息。 4. **GLib错误**:如果有GLib错误,通常会包含错误描述和位置。 #### 常见错误示例 - **GStreamer管道构建失败**:可能是元素缺失或能力(caps)不匹配。 - **内存分配失败**:DMA-BUF堆分配失败,可能由于内存不足或权限问题。 - **权限问题**:访问设备节点(如`/dev/dma_heap/mtk_mm-uncached`)需要权限,如果程序未获得权限,将无法分配内存。 ### 步骤4: 解决常见问题 根据日志中发现的错误,可以采取以下措施: - **GStreamer元素缺失**:确保设备上安装了所需的GStreamer插件。可以通过`gst-inspect-1.0`命令检查插件是否存在。 - **内存分配失败**: - 检查`/dev/dma_heap/`目录下是否存在`mtk_mm-uncached`设备节点。如果不存在,可能是内核配置问题。 - 确保程序有权限访问设备节点(通常需要`system`组或特定的SELinux权限)。 - **GLib错误**:常见的GLib错误包括空指针、资源分配失败等,需要根据具体错误信息分析。 ### 步骤5: 启用更详细的日志 如果默认日志信息不足,可以启用GStreamer的调试日志: ```bash adb shell setprop GST_DEBUG <level> ``` 其中,`<level>`是调试级别(如`3`表示错误,`4`表示警告,`5`表示信息,`6`表示调试,`9`表示日志)。例如,设置所有GStreamer日志为最高级别: ```bash adb shell setprop GST_DEBUG 9 ``` 然后重新运行程序并捕获日志。 ### 示例日志片段分析 假设日志中出现以下错误: ``` E gst : gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0: streaming stopped, reason not-negotiated (-4) ``` 这表明管道中的源(src)无法与下游元素协商媒体格式。解决方法是检查管道的元素连接和媒体格式(caps)是否一致。 ### 总结 通过以上步骤,用户可以获取并分析`animation_demo`程序的日志,从而了解程序运行情况并排查问题。如果问题仍然无法解决,建议提供具体的日志片段以便进一步分析。 §§相关问题§§ 1. 如何为Android应用程序添加自定义logcat标签? 2. 如何调试GStreamer管道构建问题? 3. DMA-BUF Heap分配失败的可能原因有哪些?</think>以下是关于`animation_demo`程序使用DMA-BUF堆(`mtk_mm-uncached`)和GStreamer管道时的输出日志分析及潜在问题排查指南: --- ### **1. 日志生成与捕获方法** #### **关键命令** ```bash # 启用详细日志(GStreamer + DMA-BUF) export GST_DEBUG="3,dmabuf*:7,GLib*:5" export DMA_BUF_DEBUG=1 # 运行程序并捕获日志 ./animation_demo 2>&1 | tee log.txt ``` #### **日志关键部分** ```log [GStreamer] gstpad.c: Negotiating caps with DMA-BUF... [DMA-BUF] mtk_mm-uncached: Allocated 1920x1080 buffer (fd=42) [GLib] g_main_context_pending: context=0x55a1b3c8e0 [GStreamer] gstbasetransform.c: Using DMA-BUF modifier 0x%x [ERROR] gstbufferpool.c: Failed to import DMA-BUF fd=42 (err: Permission denied) ``` --- ### **2. 常见问题分析** #### **(1) DMA-BUF分配失败** - **日志特征** ```log [DMA-BUF] mtk_mm-uncached: Allocation failed (size=2073600) [ERROR] mtk_dma_heap: No free memory in uncached pool ``` - **可能原因** - 内存碎片或池耗尽(常见于连续大内存请求)[^2] - 权限问题:未授予`/dev/dma_heap/mtk_mm-uncached`访问权限 - **解决方案** ```bash # 检查堆状态 cat /sys/kernel/debug/dma_buf/heaps/mtk_mm-uncached/status # 调整内核参数(需root) echo 2048 > /sys/module/dma_heap_mtk_mm/parameters/pool_size_mb ``` #### **(2) GStreamer管道协商失败** - **日志特征** ```log [GStreamer] ERROR: Negotiation failed for caps: video/x-raw, format=NV12 [WARN] gstvideopool.c: Unsupported DMA-BUF modifier 0x1001025 ``` - **根本原因** - GStreamer元素(如`v4l2src`或`glupload`)不支持DMA-BUF的格式修饰符 - 缺少`dma-heap`插件或`gstreamer1.0-plugins-bad` - **修复步骤** ```bash # 安装必要插件 sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-dma-heap # 验证元素支持 gst-inspect-1.0 | grep "dmabuf" ``` #### **(3) GLib线程冲突** - **日志特征** ```log [GLib] CRITICAL: g_main_context_push_thread_default: assertion 'acquired' failed [ERROR] gstpipeline.c: GLib context thread mismatch ``` - **触发场景** - 多线程中错误调用GLib主循环(如从非主线程操作GStreamer管道) - **代码修复** ```c // 正确调用GLib主循环 g_main_context_invoke (context, (GSourceFunc) update_pipeline, data); ``` --- ### **3. 优化建议** 1. **DMA-BUF缓存策略** 使用`mtk_mm-cached`替代`uncached`(若允许数据一致性延迟): ```c // 分配时指定缓存类型 dma_heap_fd = open("/dev/dma_heap/mtk_mm-cached", O_RDWR); ``` 2. **GStreamer管道优化** 显式指定DMA-BUF格式: ```bash gst-launch-1.0 v4l2src ! video/x-raw,format=NV12,modifier=linc-tiled ! ... ``` 3. **内存泄露检测** 使用`dmabuf-dump`工具跟踪缓冲生命周期: ```bash watch -n 1 "cat /sys/kernel/debug/dma_buf/bufinfo" ``` --- ### **4. 典型日志解析示例** ```log [DMA-BUF] mtk_mm-uncached: Alloc 1920x1080 (fd=33) [GStreamer] gstv4l2allocator.c: Exported DMA-BUF 33 as GstMemory [GLib] gst_task.c: Thread entering loop [GStreamer] gstglbasebufferpool.c: Imported DMA-BUF 33 to GPU [ERROR] mtk_drm_gem: DRM_IOCTL_PRIME_FD_TO_HANDLE failed (err=-13) ``` **诊断结论**: - DMA-BUF分配成功(fd=33) - DRM驱动导入失败(错误码-13 = EACCES) - **根因**:缺少`DRM_RDWR`权限或SELinux策略限制 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值