【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的 *bytes.BytesReader 就 `invalid memory address or nil pointer dereference`
出错的代码如下:
func getEab(ctx context.Context, credentialsJSON string, old *externalAccountKeyResp) (*externalAccountKeyResp, error) {
// init http client
//
var postData *bytes.Reader = nil
if old != nil {
buf, _ := json.Marshal(old)
postData = bytes.NewReader(buf)
}
var api = fmt.Sprintf("https://publicca.googleapis.com/v1beta1/projects/%s/locations/global/externalAccountKeys", "xxxx")
resp, err := conf.Client(context.Background()).Post(api, "application/json", postData)
最后一行代码出现:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x18 pc=0x1024b56d0]
goroutine 36 [running]:
bytes.(*Reader).Len(...)
/opt/homebrew/Cellar/go/1.20.4/libexec/src/bytes/reader.go:27
net/http.NewRequestWithContext({0x102f2d2c8?, 0x140000340b8}, {0x102a565e4?, 0x1035bef20?}, {0x140005b8120?, 0x5e?}, {0x102f24be0, 0x0?})
/opt/homebrew/Cellar/go/1.20.4/libexec/src/net/http/request.go:909 +0x3e0
net/http.NewRequest(...)
/opt/homebrew/Cellar/go/1.20.4/libexec/src/net/http/request.go:840
net/http.(*Client).Post(0x102a8fcf2?, {0x140005b8120?, 0x140000340b8?}, {0x102a5fc1e, 0x10}, {0x102f24be0?, 0x0?})
/opt/homebrew/Cellar/go/1.20.4/libexec/src/net/http/client.go:844 +0x6c
github.com/myklst/terraform-provider-st-gcp/gcp.gcpGetEab({0x102f2d338?, 0x140005a2cf0?}, {0x140005ef500, 0x920}, 0x0)
/Users/fuchunzhang/code/github.com/ahfuzhang/terraform-provider-st-gcp/gcp/resource_eab.go:223 +0x348
github.com/myklst/terraform-provider-st-gcp/gcp.(*gcpAcmeEabResource).Create(0x0?, {0x102f2d338, 0x140005a2cf0}, {{{{0x102f31510, 0x140005a3c50}, {0x102d37d40, 0x140005a37d0}}, {0x102f32a00, 0x14000622410}}, {{{0x102f31510, ...}, ...}, ...}, ...}, ...)
/Users/fuchunzhang/code/github.com/ahfuzhang/terraform-provider-st-gcp/gcp/resource_eab.go:83 +0x15c
github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).CreateResource(0x14000349b80, {0x102f2d338, 0x140005a2cf0}, 0x14000545380, 0x14000545320)
/Users/fuchunzhang/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/fwserver/server_createresource.go:97 +0x428
github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).ApplyResourceChange(0x140005454e0?, {0x102f2d338, 0x140005a2cf0}, 0x140005aa410, 0x140005454e0)
/Users/fuchunzhang/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/fwserver/server_applyresourcechange.go:54 +0x370
github.com/hashicorp/terraform-plugin-framework/internal/proto6server.(*Server).ApplyResourceChange(0x14000349b80, {0x102f2d338?, 0x140005a2ba0?}, 0x140005aa370)
/Users/fuchunzhang/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/proto6server/server_applyresourcechange.go:52 +0x314
github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ApplyResourceChange(0x140001b4280, {0x102f2d338?, 0x140005a21b0?}, 0x14000264070)
/Users/fuchunzhang/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov6/tf6server/server.go:816 +0x3bc
github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ApplyResourceChange_Handler({0x102edc4c0?, 0x140001b4280}, {0x102f2d338, 0x140005a21b0}, 0x14000264000, 0x0)
/Users/fuchunzhang/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:385 +0x170
google.golang.org/grpc.(*Server).processUnaryRPC(0x1400014e000, {0x102f317f8, 0x14000582b60}, 0x140005b4000, 0x1400010f080, 0x1035b16c0, 0x0)
/Users/fuchunzhang/go/pkg/mod/google.golang.org/grpc@v1.55.0/server.go:1337 +0xc90
google.golang.org/grpc.(*Server).handleStream(0x1400014e000, {0x102f317f8, 0x14000582b60}, 0x140005b4000, 0x0)
/Users/fuchunzhang/go/pkg/mod/google.golang.org/grpc@v1.55.0/server.go:1714 +0x82c
google.golang.org/grpc.(*Server).serveStreams.func1.1()
/Users/fuchunzhang/go/pkg/mod/google.golang.org/grpc@v1.55.0/server.go:959 +0x84
created by google.golang.org/grpc.(*Server).serveStreams.func1
/Users/fuchunzhang/go/pkg/mod/google.golang.org/grpc@v1.55.0/server.go:957 +0x16c
换成如下的写法后,问题解决:
if old != nil {
buf, _ := json.Marshal(old)
resp, err = conf.Client(context.Background()).Post(api, "application/json", bytes.NewReader(buf))
} else {
resp, err = conf.Client(context.Background()).Post(api, "application/json", nil)
}
暂未想到原因。
【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的 *bytes.BytesReader 就 `invalid memory address or nil pointer dereference`的更多相关文章
- 记一个神奇的WAS问题:sibuswsgw-sibuswsgw_console.jar invalid LOC header (bad signature) 分类: WebSphere 2015-08-06 23:21 9人阅读 评论(0) 收藏
今天晚上,出现了一个神奇的WAS问题,详细问题异常信息如下: [15-8-6 22:13:29:146 CST] 00000013 ApplicationMg A WSVR0203I: 应用程序:is ...
- 视觉暂留-Info:这些神奇的“视觉暂留”动画,每一幅都让人拍案叫绝!
ylbtech-视觉暂留-Info:这些神奇的“视觉暂留”动画,每一幅都让人拍案叫绝! 1.返回顶部 1. 这些神奇的“视觉暂留”动画,每一幅都让人拍案叫绝! 原创|发布:2018-05-28 19: ...
- WWW 2015:一个神奇的会议
2015:一个神奇的会议" title="WWW 2015:一个神奇的会议"> 作者:微软亚洲研究院研究员 袁进辉 WWW 2015(24th Internatio ...
- openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)
计算字段.关联字段,对象修改时自动变更保存(当 store=True 时),当 store=False 时,默认不支持过滤和分组7.0中非计算字段.关联字段只读时无法修改保存的问题暂未解决 示例代码: ...
- modifytime是一个神奇的column name----这边文章是错的totally,因为我的实验不彻底。timestamp属性很神奇,头一个timestamp,会自动的成DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在mysql里边modifytime是一个神奇的column name,试一下. 请执行sql语句 CREATE TABLE `test_time` ( `modifytime` timestamp ...
- 一个神奇的???whatever~~
一个神奇的类,用来封装消息数据,统一数据传递接口,从unity引擎源码拷贝而来. #include <iostream> #include <assert.h> #includ ...
- Jfrog Artifactory jenkins 流水线使用docker的方式培训[暂未成功]
1. 创建jenkins的流水线 2. 创建artifactory的镜像仓库 3. 创建generic的仓库上传需要的 war包还有tar包. 4. 修改pipeline的 脚本 主要修改的地方. 修 ...
- js 编写一个神奇的四则运算
写一个算法,有时候可以用简单的方法就可以写出来,但是只能针对特定的环境,如果要能够适应不同的环境,就需要对算法进行优化,在优化的过程中,你会觉得非常神奇,下面来看一个简单的四则运算的算法编写方式: 1 ...
- 微信图片上传,遇到一个神奇的jgp
微信图片上传,获取图片base64遇到一个神奇的 jgp var imgFn = function (event) { event.preventDefault(); var id = '#'+$ ...
- JS高级---一个神奇的原型链
一个神奇的原型链 <script> var divObj=document.getElementById("dv"); console.dir(divObj); //d ...
随机推荐
- 再谈BOM和DOM(2):DOM节点层次/属性/选择器/节点关系/操作详解
DOM模型将整个文档(XML文档和HTML文档)看成一个树形结构,并用document对象表示该文档. 根据W3C DOM规范,DOM是HTML与XML的应用编程接口(API),DOM将整个页面映射为 ...
- 企业新道路怎么走?火山引擎AB测试助力决策选择
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 乐刻是一家创立8年的企业,除了消费者熟悉的乐刻健身房可办月卡.24小时营业等,其还有比外界了解更多元的业务.目 ...
- Solon 编译打包怎样保持参数名不变?
1.Java 项目 Java maven 项目 <plugin> <groupId>org.apache.maven.plugins</groupId> <a ...
- HanLP — HMM隐马尔可夫模型 -- 训练&预测
BMES => B-begin:词语开始.M-middle:词语中间.E-end:词语结束.S-single:单独成词 训练的过程,就是求三个矩阵的过程 初始概率矩阵 转移概率矩阵 发射矩阵 每 ...
- 【软件安装记录篇】本地虚拟机Centos7快速安装MySQL
安装 采用Installing MySQL on Linux Using the MySQL Yum Repository的方式进行安装. 1. 首先下载服务器版本对应的rpm文件,下载地址:[链接] ...
- MAC SAP for JAVA配置
一.自定义应用程序服务器配置 conn = /H/<SAP路由器服务器地址(如果有)>/S/3299 /H/<SAP服务器地址>/S/32<Instance_no> ...
- C#写日志工具类(新版)
源码:https://gitee.com/s0611163/LogUtil 昨天打算把我以前写的一个C#写日志工具类放到GitHub上,却发现了一个BUG,当然,已经修复了. 然后写Demo对比了NL ...
- # 0x56 动态规划-状态压缩DP
0x56 动态规划-状态压缩DP Mondriaan's Dream Description Squares and rectangles fascinated the famous Dutch pa ...
- # 0x54 动态规划-树形DP
A.没有上司的舞会 基础树形DP emmm,蒟蒻发现自己的DP太辣鸡了...所以来练练DP,这题的话实际上应该算是树DP的入门题吧,转移还是挺好想的. 每次在每个节点都会有个选择,就是选还是不选,如果 ...
- Android 加载图片占用内存分析
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/aRDzmMlkqB14Ty67GJs9vg作者:Xu Jie 不同Android版本,对一张图 ...