转自:https://blog.csdn.net/winitz/article/details/72460775 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/winitz/article/details/72460775问题调试中遇到过这样一个问题,主芯片访问外部I2C设备时,市场出现I2C读写time out,而且一旦出现这个问题后,I2C访问会一直失败. 现象1) 从log看,第一次出现time out是在发送end命令时,之后一直访问失…
STM32的IIC问题一直存在,在网上也被很多人吐槽,然而FAE告诉我,硬件IIC的问题在F1,F3,F4系列单片机存在,而在L0上已经解决了,然而这几天调试加密芯片和显示芯片,都是IIC芯片,却再一次证明,L0系列的IIC一样存在问题, FAE告诉我是我的配置问题,故写这篇文章,如果是我配置问题,希望得到高人指点,再次感激不尽. 配置代码: void MX_I2C1_Init(void) { hi2c1.Instance = I2C1; hi2c1.Init.Timing = 0x00707C…
一:背景 1. 讲故事 上个月有位朋友加wx告知他的程序有挂死现象,询问如何进一步分析,截图如下: 看这位朋友还是有一定的分析基础,可能玩的少,缺乏一定的分析经验,当我简单分析之后,我发现这个dump挺有意思的, CPU,内存,挂死 三样全占,程序悲惨莫过于此... 既然找到我,我得想办法化解他的痛苦,由易到难我们逐一分析这三样都是因为什么原因所致? 二:三高分析 1. 挂死原因 根据 40+ 的dump分析经验,挂死大多是由于某种情况导致线程卡死,导致后续请求堆积在 threadpool 中,…
工具出现挂死问题 1.问题描述 工具出现挂死问题,巡检IIS发现以下异常日志 现网系统日志: 事件类型:    错误 事件来源:    .NET Runtime 描述: Application: DiyRingSet30Tool.exe Framework Version: v4.0.30319 Description: The process was terminated due to an internal error in the .NET Runtime at IP 791F7E06 (…
这两天为了定位JBOSS老是挂死的问题,学习了一下JAVA多线程方面的知识,在此总结一下 1.在Java程序中,JVM负责线程的调度.线程调度是指按照特定的机制为多个线程分配CPU的使用权. 调度的模式有两种:分时调度和抢占式调度.分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间:抢占式调度是根据线程的优先级别来获取CPU的使用权.JVM的线程调度模式采用了抢占式模式. 2.Thread类实际上也是实现了Runnable接口的类. 在启动的多线程的时候,需要先通过Thr…
摘要:本次分享的是一次关于 MySQL 高可用问题的定位过程,其中曲折颇多但问题本身却比较有些代表性,遂将其记录以供参考. 一.背景 近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令人感到头疼,一来这类问题有时候属于"偶发"现象,难以在环境上快速复现:二来则是可靠性问题的定位链条有时候变得很长,极端情况下可能要从 A 服务追踪到 Z 服务,或者是从应用代码追溯到硬件层面. 本次分享的是一次关于 MySQL 高可用问题的定位过程,其中曲折颇多但问题本身却比较有些代表性,遂将…
声明:本文为博主原创文章,由于已授权部分平台发表该文章(知乎.云社区),可能造成发布时间方面的困扰. 一.背景 近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令人感到头疼,一来这类问题有时候属于"偶发"现象,难以在环境上快速复现:二来则是可靠性问题的定位链条有时候变得很长,极端情况下可能要从 A 服务追踪到 Z 服务,或者是从应用代码追溯到硬件层面. 本次分享的是一次关于 MySQL 高可用问题的定位过程,其中曲折颇多但问题本身却比较有些代表性,遂将其记录以供参考. 架构…
方法1: 使用root用户:Oracle@NDMCDB05:~> su -Password: NDMCDB05:~ # cat /etc/mtab /dev/sda2 / reiserfs rw,acl,user_xattr 0 0proc /proc proc rw 0 0sysfs /sys sysfs rw 0 0debugfs /sys/kernel/debug debugfs rw 0 0udev /dev tmpfs rw 0 0devpts /dev/pts devpts rw,m…
只做工作总结备忘之用. 正在烧镜像,稍总结一下进来改bug遇到的问题. 一个项目里要用到L3 switch的nat,vrrp功能,但实地测试中偶然出现write file挂死的情况,但不是必现.交付在即,于是加调试信息,反复跑配置的脚本,定位bug. 一,期初怀疑是vtysh与vrrpd进程通信出现阻塞(现象即是系统挂死). (1)因为在跑配置脚本时,出现了enable命令也挂死的情况,所以这么怀疑: (2)在vrrpd与vtysh命令传输的关键点加打印信息(注意vrrpd不要-d daemon…
Redis实现了主从同步,但是主库挂死了,如何处理 方案:切换主库的身份 # 连接从库 [root@localhost redis-]# redis-cli -p # 取消从库身份 > slaveof no one # 连接从库 [root@localhost redis-]# redis-cli -p # 重新设置从库 > slaveof 切换完成!…
0.环境:arm CPU 带有IIC控制器作为slave端,带有调试串口. 1.bug表现:IIC slave 在系统启动后概率挂死,导致master无法detect到slave. 猜测1:认为IIC device程序有问题 检查1:查看程序发现有可能溢出的部分,使用IIC 工具刷过量数据到slave,未出问题. 猜测2:认为IIC device寄存器进入异常状态未能恢复 检查2:检查正常IIC寄存器和异常状态IIC寄存器,未能发现问题. 猜测3:时钟分频问题 检查3:询问同事,答固定分频. 猜…
一:背景 1. 讲故事 这几天看的 dump 有点多,有点伤神伤脑,晚上做梦都是dump,今天早上头晕晕的到公司就听到背后同事抱怨他负责的WPF程序挂死了,然后测试的小姑娘也跟着抱怨...嗨,也不知道是哪一个迭代改出来的问题,反正客户不起义问题都不大. 不过我听到程序无响应,内心深处真的是一拘灵...本能反应吧,给他发了一个 procdump 过去生成两个 dump 发过来. 话说回来,WPF这种带UI界面的挂死问题其实很好分析的,无非就是 UI线程 失去响应了,至于为啥失去响应了,肯定是做了什…
一:背景 1. 讲故事 这个月中旬,有位朋友加我wx求助他的程序线程占有率很高,寻求如何解决,截图如下: 说实话,和不同行业的程序员聊天还是蛮有意思的,广交朋友,也能扩大自己的圈子,朋友说他因为这个bug还导致项目黄了一个... 哈哈,看样子是客户不买账,验收不了,害...早找到我,这客户不就捞回来啦,这也许就是技术的价值吧! 既然找到我,那就让这个挂死问题彻底消失吧,上windbg说话. 二:Windbg 分析 1. 查看线程情况 既然朋友说线程高,那就从线程入手,用 !t 命令即可. 0:0…
1. 环境: ubuntu 系统 + strace + vim 2.编写挂死程序:(参考博客) #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <string.h> int main(int argc, char** argv) { getpid(); if(argc < 2) { printf("pick one (user|system)\n&q…
TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 支持7bit.10bit设备地址模式 32字节FIFO缓冲区 可编程时钟发生器 双DMA通道,一条中断线 三个I2C模块实例I2C0\I2C1\I2C2 时钟信号能够达到最高48MHz,来自PRCM 不支持 SCCB协议 高速模式(3.4MBPS) 管脚 管脚 类型 描述 I2Cx_SCL I/O…
原文网址:http://www.cnblogs.com/biglucky/p/4059586.html TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 支持7bit.10bit设备地址模式 32字节FIFO缓冲区 可编程时钟发生器 双DMA通道,一条中断线 三个I2C模块实例I2C0\I2C1\I2C2 时钟信号能够达到最高48MHz,来自PR…
死磕以太坊源码分析之rlpx协议 本文主要参考自eth官方文档:rlpx协议 符号 X || Y:表示X和Y的串联 X ^ Y: X和Y按位异或 X[:N]:X的前N个字节 [X, Y, Z, ...]:[X, Y, Z, ...]的RLP递归编码 keccak256(MESSAGE):以太坊使用的keccak256哈希算法 ecies.encrypt(PUBKEY, MESSAGE, AUTHDATA):RLPx使用的非对称身份验证加密函数 AUTHDATA是身份认证的数据,并非密文的一部分…
死磕以太坊源码分析之downloader同步 需要配合注释代码看:https://github.com/blockchainGuide/ 这篇文章篇幅较长,能看下去的是条汉子,建议收藏 希望读者在阅读过程中,指出问题,给个关注,一起探讨. 概览 downloader 模块的代码位于 eth/downloader 目录下.主要的功能代码分别是: downloader.go :实现了区块同步逻辑 peer.go :对区块各个阶段的组装,下面的各个FetchXXX 就是很依赖这个模块. queue.g…
死磕以太坊源码分析之txpool 请结合以下代码阅读:https://github.com/blockchainGuide/ 写文章不易,也希望大家多多指出问题,交个朋友,混个圈子哦 交易池概念原理 交易池工作概况: 交易池的数据来源主要来自: 本地提交,也就是第三方应用通过调用本地以太坊节点的RPC服务所提交的交易: 远程同步,是指通过广播同步的形式,将其他以太坊节点的交易数据同步至本地节点; 交易池中交易去向:被Miner模块获取并验证,用于挖矿:挖矿成功后写进区块并被广播 Miner取走交…
死磕以太坊源码分析之MPT树-上 前缀树Trie 前缀树(又称字典树),通常来说,一个前缀树是用来存储字符串的.前缀树的每一个节点代表一个字符串(前缀).每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符.子节点代表的字符串是由节点本身的原始字符串,以及通往该子节点路径上所有的字符组成的.如下图所示: Trie的结点看上去是这样子的: [ [Ia, Ib, - I*], value] 其中 [Ia, Ib, ... I*] 在本文中我们将其称为结点的 索引数组 ,它以 key 中的下…
死磕以太坊源码分析之MPT树-下 文章以及资料请查看:https://github.com/blockchainGuide/ 上篇主要介绍了以太坊中的MPT树的原理,这篇主要会对MPT树涉及的源码进行拆解分析.trie模块主要有以下几个文件: |-encoding.go 主要讲编码之间的转换 |-hasher.go 实现了从某个结点开始计算子树的哈希的功能 |-node.go 定义了一个Trie树中所有结点的类型和解析的代码 |-sync.go 实现了SyncTrie对象的定义和所有方法 |-i…
死磕以太坊源码分析之EVM固定长度数据类型表示 配合以下代码进行阅读:https://github.com/blockchainGuide/ 写文不易,给个小关注,有什么问题可以指出,便于大家交流学习. 翻译自 https://medium.com/@hayeah/diving-into-the-ethereum-vm-part-2-storage-layout-bc5349cb11b7 我们先看一个简单的Solidity合约的汇编代码: contract C { uint256 a; func…
一次接口压力测试qps极低原因分析及解决过程 9-2日在做内部的性能测试相关培训时,发现注册接口压力测试qps极低(20左右),这个性能指标远不能达到上线标准 ,经过一系列调试,最后定位 98%的时间都花在对 用户 表 做update更新 (时间达100ms以上). 涉及sql语句: update User set loginName='q'where userId='ec171d27-f4a8-478c-b557-dffec8f00826' 分析问题思路: 1) userId字段没有加索引 验…
死磕以太坊源码分析之Kademlia算法 KAD 算法概述 Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能.使用一种基于异或指标的拓扑结构来路由查询和定位节点,这简化了算法并有助于证明.该拓扑结构有一个特点:每次消息交换都能够传递或强化有效信息.系统利用这些信息进行并发的异步查询,可以容忍节点故障,并且故障不会导致用户超时. KAD算法要处理的问题 如何分配存储内容到各个节点,新增/删除内容如何处理 如何找到存储文件的节点/地址/路径 节点状态…
死磕以太坊源码分析之p2p节点发现 在阅读节点发现源码之前必须要理解kadmilia算法,可以参考:KAD算法详解. 节点发现概述 节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中. 以太坊的节点发现基于类似的kademlia算法,源码中有两个版本,v4和v5.v4适用于全节点,通过discover.ListenUDP使用,v5适用于轻节点通过discv5.ListenUDP使用,本文介绍的是v4版本. 节点发现功能主要涉及 Server Table udp 这几个数据结构,它们有…
死磕以太坊源码分析之Fetcher同步 Fetcher 功能概述 区块数据同步分为被动同步和主动同步: 被动同步是指本地节点收到其他节点的一些广播的消息,然后请求区块信息. 主动同步是指节点主动向其他节点请求区块数据,比如geth刚启动时的syning,以及运行时定时和相邻节点同步 Fetcher负责被动同步,主要做以下事情: 收到完整的block广播消息(NewBlockMsg) 收到blockhash广播消息(NewBlockHashesMsg) 这两个消息又是分别由 peer.AsyncS…
死磕以太坊源码分析之Ethash共识算法 代码分支:https://github.com/ethereum/go-ethereum/tree/v1.9.9 引言 目前以太坊中有两个共识算法的实现:clique和ethash.而ethash是目前以太坊主网(Homestead版本)的POW共识算法. 目录结构 ethash模块位于以太坊项目目录下的consensus/ethash目录下. algorithm.go 实现了Dagger-Hashimoto算法的所有功能,比如生成cache和datas…
死磕以太坊源码分析之state 配合以下代码进行阅读:https://github.com/blockchainGuide/ 希望读者在阅读过程中发现问题可以及时评论哦,大家一起进步. 源码目录 |-database.go 底层的存储设计 |-dump.go 用来dumpstateDB数据 |-iterator.go,用来遍历Trie |-journal.go,用来记录状态的改变 |-state_object.go 通过state object操作账户值,并将修改后的storage trie写入…
死磕以太坊源码分析之EVM指令集 配合以下代码进行阅读:https://github.com/blockchainGuide/ 写文不易,给个小关注,有什么问题可以指出,便于大家交流学习. 以下指令集持续更新,最新文章请参考上面 EVM 指令集概念 EVM执行的是字节码.由于操作码被限制在一个字节以内,所以EVM指令集最多只能容纳256条指令.目前EVM已经定义了100多条指令,还有100多条指令可供以后扩展.这100多条指令包括算术运算指令,比较操作指令,按位运算指令,密码学计算指令,栈.me…
死磕以太坊源码分析之EVM动态数据类型 配合以下代码进行阅读:https://github.com/blockchainGuide/ 写文不易,给个小关注,有什么问题可以指出,便于大家交流学习. Solidity提供了在其他编程语言常见的数据类型.除了简单的值类型比如数字和结构体,还有一些其他数据类型,随着数据的增加可以进行动态扩展的动态类型.动态类型的3大类: 映射(Mappings):mapping(bytes32 => uint256), mapping(address => strin…