[Date Prev][Date Next] [Chronological] [Thread] [Top]

slapd with oracle backend crashes while deleting entries (ITS#2568)

Full_Name: Michael Meyer
Version: 2.1.17
OS: Linux SuSE 8.1
Submission from: (NULL) (


I encounter a problem with OpenLDAP with Oracle backend. slapd crashes with
'Segmentation fault' when deleting entries.

My configuration is:

* SuSE 8.1

* OpenLDAP 2.1.14 (2.1.17 tested as well which doesn't matter)
   configured --with-sql using unixODBC
   using Oracle testdb example shipped by the source
     (I changed delete statement from '{call delete_phone(?,?)}'
      to 'DELETE FROM phones WHERE phone=?' for clarity
      I tried to delete phoneNumber entries .. which cause segfault)

* unixODBC 2.2.2 (2.2.5 tested as well which doesn't matter)

* Oracle ODBC driver from http://fndapl.fnal.gov/~dbox/oracle/odbc/
   Version 0.5.1
   changes for debugging purpose : comment out DEBUG
                                   comment in some assert()

* Postgresql ODBC driver

What is working?

 system ist starting with Postgresql and Oracle SQL Backend. Searching and
 browsing of both directory (Postgresql & Oracle) work fine. Deleting and
 modifying from Postgresql directory work fine too. When deleting entries from
 Oracle directory, slapd will crash with Segmentation fault.

 It seems to me that there are problem while assigning bind variables.

output of slapd -d 5 while trying to delete LDAP telephoneNumber entries.


backsql_modify(): modifying entry 'cn=mitya kovalev,o=sql,c=de' (id=2)
backsql_modify(): traversing modifications list
SQLAllocHandle.c 264 stmt [0x08230660]
backsql_modify(): attribute 'telephoneNumber'
backsql_modify(): deleting values for attribute 'telephoneNumber'
backsql_modify(): executing 'DELETE FROM phones WHERE phone=?'
                Exit: [SQL_SUCCESS]
                ood_driver_prepare = "DELETE FROM phones WHERE phone=:P2"

                Exit: [SQL_SUCCESS]
                Status Report = "DELETE FROM phones WHERE phone=:P2"

                Exit: [SQL_SUCCESS]
                parmnum = 1
                ap->octet_length = 8
                ip->data_size = 8
                ap->concise_type = 1
                ap->bind_target_type = 1
                ip->data_type = 1
                bind_ptr = "222-3234"

                Exit: [SQL_SUCCESS]
                parmnum = 2
                ap->octet_length = 0
                ip->data_size = 4
                ap->concise_type = -18
                ap->bind_target_type = 4
                ip->data_type = 3
                bind_ptr = "^A"

                Exit: [SQL_SUCCESS]
                parmnum = 3
                ap->octet_length = 0
                ip->data_size = 0
                ap->concise_type = -12376
                ap->bind_target_type = 27
                ip->data_type = 1
                bind_ptr = "0¹#^H|
Ï>@p@#^Hp@#^H°Ï>@°Ï>@?Ï>@?Ï>@ÀÏ>@ÀÏ>@ÈÏ>@ÈÏ>@P~K ^HP~K
^HØÏ>@ØÏ>@H!!^HH!!^HèÏ>@èÏ>@ðÏ>@ðÏ>@øÏ>@øÏ>@Èn ^HÈn
^H^HÐ>@^HÐ>@~H'!^H~H'!^H^XÐ>@^XÐ>@ Ð>@ Ð>@(Ð>@(Ð>@0Ð>@0Ð>@8Ð>@8Ð>@
Ð>@| Ð>@?Ð>@?Ð>@°Ð>@°Ð>@?Ð>@?Ð>@ÀÐ>@ÀÐ>@ÈÐ>@ÈÐ>@ÐÐ>@ÐÐ>@ØÐ>@ØÐ>@À^H#^HÀ^H#^HèÐ>@èÐ>@ðÐ>@ðÐ>@øÐ>@
                Exit: [SQL_SUCCESS]

SQLAllocHandle.c 264 stmt [0x08230660]

results in 'Segmentation fault      /usr/lib/openldap/slapd -d 5 2>&'

Thanks for any help!