Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlcxt()导致分段错误_C_Oracle_Unix_Coredump_Oracle Pro C - Fatal编程技术网

sqlcxt()导致分段错误

sqlcxt()导致分段错误,c,oracle,unix,coredump,oracle-pro-c,C,Oracle,Unix,Coredump,Oracle Pro C,让我们说明sqlcxt()可能导致分段错误的条件,我正在unix上工作,使用ProC进行到Oracle数据库的数据库连接 我的程序崩溃,核心文件显示崩溃是由于sqlcxt()函数引起的 A loadobject was found with an unexpected checksum value. See `help core mismatch' for details, and run `proc -map' to see what checksum values were expected

让我们说明sqlcxt()可能导致分段错误的条件,我正在unix上工作,使用ProC进行到Oracle数据库的数据库连接

我的程序崩溃,核心文件显示崩溃是由于
sqlcxt()
函数引起的

A loadobject was found with an unexpected checksum value.
See `help core mismatch' for details, and run `proc -map'
to see what checksum values were expected and found.

t@null (l@1)程序被信号SEGV终止
(故障地址处无映射)0xFFFFFFFFFFFFFF:
当前函数为dbmatch
442**sqlcxt((void**)0、&sqlctx、&sqlstm、&sqlfpn)**

很有可能您遇到的问题是C代码中的某种指针错误/内存分配错误。这些东西从来都不容易找到。有些事情你可能会 尝试:

  • 查看您是否可以注释掉(或#ifdef)程序的部分,以及问题是否消失。如果是这样的话,你可以接近坏的部分
  • 在调试器中运行程序
  • 与其他人一起进行代码检查-这通常会导致发现多个问题(通常在我的代码中有效)

  • 我希望这会有所帮助。请添加更多详细信息,我会检查这个问题,看看我是否可以帮助您。

    这可能是您的程序中的分配错误。当我有这种行为时,总是我的错。我在Solaris/SPARC和Oracle 10g上开发。有一次是双重释放(即,我释放了同一个指针两次),第二次我在程序的Oracle部分中有一个核心是当我释放了一个不是分配内存块的指针时。
    如果您使用的是Solaris,您可以尝试使用libumem分配库(有关详细信息,请使用谷歌搜索),查看行为是否发生了变化。

    Unix的哪个版本和风格?Oracle的哪个版本?CoreDump是异常情况,通常是由于配置中的一些冲突造成的。诊断这一点可能需要大量的低级细节(更不用说耐心了)。因此,您现在发布的信息越多,有人真正能够帮助您的机会就越大。代码偶尔会失败,这意味着在一段时间内它成功了,在一段时间内它失败了。请尝试隔离导致它失败的输入数据。几乎可以肯定,如果是间歇性故障,则是空指针问题。这听起来很难看,但我通常依赖fprintf和fflush并将其附加到文件中。很多打印语句之后我发现了问题,然后我通常不想让任何人知道我在我的C代码中做了什么愚蠢的事情。奇怪的是,这个失败和成功是无法识别的。我在核心文件中得到的只是sqltxt()失败。如果其他方法都不起作用-我知道这很难看-但是尝试大量的fprintf(fp,“行:%d\n”,行);fflush(fp);到日志文件,并跟踪与故障相关的数据。是的,甚至我也认为这是内存问题,但为什么相同的代码会返回成功和失败times@SachinChourasiya也许有时候分配失败了,有时候却没有。有时会出现缓冲区溢出,有时不会,或者有时缓冲区溢出足够幸运,不会造成伤害。
    dbx: warning: Some symbolic information might be incorrect.
    
    t@null (l@1) program terminated by signal SEGV
    
     (no mapping at the fault address)0xffffffffffffffff:     
    <bad address 0xffffffffffffffff>
    Current function is dbMatchConsortium
      442               **sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);**