Aix Oracle 使用sbttest测试libobk.a(shr.o)出现段错误
操作系统:AIX 7.1
数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
操作:使用sbttest 测试libobk.a(shr.o)
现象:两次成功调用sbtinit函数后,出现段错误(同样的代码在linux系统上编译的libobk.so可正常加载使用)

#include <sbt.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
static void _log(const char *msg) {
write(STDERR_FILENO, msg, strlen(msg));
write(STDERR_FILENO, "\n", 1);
}
int sbtopen(sbtctx *ctx, int flags) {
return 0;
}
int sbtclose(sbtctx *ctx, int flags) {
return 0;
}
int sbtread(sbtctx *ctx, void *buf, int *len) {
return 0;
}
int sbtwrite(sbtctx *ctx, void *buf, int *len) {
return 0;
}
int sbtremove(sbtctx *ctx, int flags, const char **files) {
return 0;
}
int sbtinfo(struct sbtctx *ctx, int flags, const char **files, struct sbtinfo_t **output) {
_log("sbtinfo");
static struct sbtinfo_t info[2];
info[0].type = SBTINFO_END;
info[0].value = NULL;
*output = info;
return 0;
}
int sbtinit2(sbtctx *ctx, int flags, const struct sbtinfo_t *args) { _log("sbtinit2"); return 0; }
int sbtcommand(sbtctx *ctx, int flags, const char *cmd) { _log("sbtcommand"); return 0; }
int sbtbackup(sbtctx *ctx, int flags, const char *fn, const struct sbtinfo_t *info, int bs, int nu, int d) { _log("sbtbackup"); return 0; }
int sbtclose2(sbtctx *ctx, char flags) { _log("sbtclose2"); return 0; }
int sbtend(sbtctx *ctx, char flags) { _log("sbtend"); return 0; }
int sbterror(sbtctx *ctx, int f, int *e, const char **ne, char **ue) { _log("sbterror"); return 0; }
int sbtinfo2(sbtctx *ctx, char f, const char **fs, struct sbtinfo_t **o) { _log("sbtinfo2"); return 0; }
int sbtread2(sbtctx *ctx, int f, void *b) { _log("sbtread2"); return 0; }
int sbtremove2(sbtctx *ctx, int f, const char **fs) { _log("sbtremove2"); return 0; }
int sbtrestore(sbtctx *ctx, int f, char *fn, int bs) { _log("sbtrestore"); return 0; }
int sbtwrite2(sbtctx *ctx, int f, void *b) { _log("sbtwrite2"); return 0; }
int sbtinit(sbtdata *data, const struct sbtinfo_t *input, sbtopt **output) {
_log("sbtinit");
static sbtopt opts[20];
static int sbt2 = 2;
static int api_ver = 0x0200;
static char *vendor = "DemoSBT";
static sbtapi api;
static size_t ctx_size = 8192;
static unsigned int maxsize = 2*1024*1024;
static unsigned int mm_ver = 1;
int i = 0;
memset(&api, 0, sizeof(api));
api.sbtinit2 = sbtinit2;
api.sbtcommand = sbtcommand;
api.sbtbackup = sbtbackup;
api.sbtclose2 = sbtclose2;
api.sbtend = sbtend;
api.sbterror = sbterror;
api.sbtinfo2 = sbtinfo2;
api.sbtread2 = sbtread2;
api.sbtremove2 = sbtremove2;
api.sbtrestore = sbtrestore;
api.sbtwrite2 = sbtwrite2;
opts[i].type = SBTOPT_2; opts[i].value = &sbt2; i++;
opts[i].type = SBTOPT_API_VERSION; opts[i].value = &api_ver; i++;
opts[i].type = SBTOPT_VENDOR; opts[i].value = vendor; i++;
opts[i].type = SBTOPT_API; opts[i].value = &api; i++;
opts[i].type = SBTOPT_CONTEXT_SIZE; opts[i].value = &ctx_size; i++;
opts[i].type = SBTOPT_MAXSIZE; opts[i].value = &maxsize; i++;
opts[i].type = SBTOPT_MM_VERSION; opts[i].value = &mm_ver; i++;
opts[i].type = SBTOPT_END; opts[i].value = NULL;
*output = opts;
data->status = 0;
data->error = 0;
return 0;
}
相关推荐
29Linux基础命令详解——用户管理.docx
29Linux基础命令详解——用户管理
科技服务机构如何通过数据分析增强服务竞争力?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
vue+springboot基于 Java 的南昌实利广告公司的员工管理系统的设计与实现_oj680rl3毕业设计源码数据库.zip
vue+springboot基于 Java 的南昌实利广告公司的员工管理系统的设计与实现_oj680rl3毕业设计源码数据库.zip
车辆缺陷分割数据集4000张json格式.zip
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):4000 标注数量(json文件个数):4000 标注类别数:1 标注类别名称:["defect"] 每个类别标注的框数: defect count = 8740 总框数:8740 使用标注工具:labelme=5.5.0 所在仓库:firc-dataset 图片分辨率:640x640 标注规则:对类别进行画多边形框polygon 重要说明:可以将数据集用labelme打开编辑,json数据集需自己转成mask或者yolo格式或者coco格式作语义分割或者实例分割 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证
高校如何利用技术转移服务转化科研成果并提升影响力?.docx
高校如何利用技术转移服务转化科研成果并提升影响力?


