Aix Oracle 使用sbttest测试libobk.a(shr.o)出现段错误

weixin_41270364 weixin_41270364 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

操作系统: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+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

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

高校如何利用技术转移服务转化科研成果并提升影响力?

BIZKEEN
评论
收藏 已收藏
分享
返回顶部
weixin_41270364
Oracle 17,133 成员 55,258 内容