{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,13]],"date-time":"2026-01-13T02:59:06Z","timestamp":1768273146428,"version":"3.49.0"},"publisher-location":"Cham","reference-count":45,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030888053","type":"print"},{"value":"9783030888060","type":"electronic"}],"license":[{"start":{"date-parts":[[2021,1,1]],"date-time":"2021-01-01T00:00:00Z","timestamp":1609459200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2021,1,1]],"date-time":"2021-01-01T00:00:00Z","timestamp":1609459200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2021]]},"DOI":"10.1007\/978-3-030-88806-0_16","type":"book-chapter","created":{"date-parts":[[2021,10,13]],"date-time":"2021-10-13T17:25:06Z","timestamp":1634145906000},"page":"323-345","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":31,"title":["A Multilanguage Static Analysis of Python Programs with Native C Extensions"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-8487-0326","authenticated-orcid":false,"given":"Rapha\u00ebl","family":"Monat","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7248-5914","authenticated-orcid":false,"given":"Abdelraouf","family":"Ouadjaout","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6375-3179","authenticated-orcid":false,"given":"Antoine","family":"Min\u00e9","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2021,10,13]]},"reference":[{"key":"16_CR1","doi-asserted-by":"crossref","unstructured":"Allen, N., Krishnan, P., Scholz, B.: Combining type-analysis with points-to analysis for analyzing Java library source-code. In: SOAP@PLDI. ACM (2015)","DOI":"10.1145\/2771284.2771287"},{"key":"16_CR2","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"221","DOI":"10.1007\/11823230_15","volume-title":"Static Analysis","author":"G Balakrishnan","year":"2006","unstructured":"Balakrishnan, G., Reps, T.: Recency-abstraction for heap-allocated storage. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134, pp. 221\u2013239. Springer, Heidelberg (2006). https:\/\/doi.org\/10.1007\/11823230_15"},{"key":"16_CR3","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"85","DOI":"10.1007\/3-540-36377-7_5","volume-title":"The Essence of Computation","author":"B Blanchet","year":"2002","unstructured":"Blanchet, B., et al.: Design and implementation of a special-purpose static program analyzer for safety-critical real-time embedded software. In: Mogensen, T.\u00c6., Schmidt, D.A., Sudborough, I.H. (eds.) The Essence of Computation. LNCS, vol. 2566, pp. 85\u2013108. Springer, Heidelberg (2002). https:\/\/doi.org\/10.1007\/3-540-36377-7_5"},{"key":"16_CR4","doi-asserted-by":"publisher","unstructured":"Brown, F., Narayan, S., Wahby, R.S., Engler, D.R., Jhala, R., Stefan, D.: Finding and preventing bugs in JavaScript bindings. In: SP. IEEE Computer Society (2017). https:\/\/doi.org\/10.1109\/SP.2017.68","DOI":"10.1109\/SP.2017.68"},{"key":"16_CR5","doi-asserted-by":"crossref","unstructured":"Bucur, S., Kinder, J., Candea, G.: Prototyping symbolic execution engines for interpreted languages. In: ASPLOS, pp. 239\u2013254. ACM (2014)","DOI":"10.1145\/2644865.2541977"},{"key":"16_CR6","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"310","DOI":"10.1007\/978-3-030-65474-0_14","volume-title":"Static Analysis","author":"S Buro","year":"2020","unstructured":"Buro, S., Crole, R.L., Mastroeni, I.: On multi-language abstraction. In: Pichardie, D., Sighireanu, M. (eds.) SAS 2020. LNCS, vol. 12389, pp. 310\u2013332. Springer, Cham (2020). https:\/\/doi.org\/10.1007\/978-3-030-65474-0_14"},{"key":"16_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"293","DOI":"10.1007\/978-3-030-17184-1_11","volume-title":"Programming Languages and Systems","author":"S Buro","year":"2019","unstructured":"Buro, S., Mastroeni, I.: On the multi-language construction. In: Caires, L. (ed.) ESOP 2019. LNCS, vol. 11423, pp. 293\u2013321. Springer, Cham (2019). https:\/\/doi.org\/10.1007\/978-3-030-17184-1_11"},{"key":"16_CR8","doi-asserted-by":"crossref","unstructured":"Chipounov, V., Kuznetsov, V., Candea, G.: S2E: a platform for in-vivo multi-path analysis of software systems. In: ASPLOS, pp. 265\u2013278. ACM (2011)","DOI":"10.1145\/1961296.1950396"},{"key":"16_CR9","doi-asserted-by":"crossref","unstructured":"Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: POPL. ACM (1977)","DOI":"10.1145\/512950.512973"},{"key":"16_CR10","unstructured":"Duncan, C.: Native-code and shader implementations of Perlin noise for Python (2021). https:\/\/github.com\/caseman\/noise. Accessed April 2021"},{"key":"16_CR11","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"185","DOI":"10.1007\/978-3-319-77935-5_14","volume-title":"NASA Formal Methods","author":"A Fromherz","year":"2018","unstructured":"Fromherz, A., Ouadjaout, A., Min\u00e9, A.: Static value analysis of python programs by abstract interpretation. In: Dutle, A., Mu\u00f1oz, C., Narkawicz, A. (eds.) NFM 2018. LNCS, vol. 10811, pp. 185\u2013202. Springer, Cham (2018). https:\/\/doi.org\/10.1007\/978-3-319-77935-5_14"},{"key":"16_CR12","doi-asserted-by":"publisher","unstructured":"Furr, M., Foster, J.S.: Checking type safety of foreign function calls. In: PLDI. ACM (2005). https:\/\/doi.org\/10.1145\/1065010.1065019","DOI":"10.1145\/1065010.1065019"},{"key":"16_CR13","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"309","DOI":"10.1007\/11693024_21","volume-title":"Programming Languages and Systems","author":"M Furr","year":"2006","unstructured":"Furr, M., Foster, J.S.: Polymorphic type inference for the JNI. In: Sestoft, P. (ed.) ESOP 2006. LNCS, vol. 3924, pp. 309\u2013324. Springer, Heidelberg (2006). https:\/\/doi.org\/10.1007\/11693024_21"},{"issue":"4","key":"16_CR14","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/1377492.1377493","volume":"30","author":"M Furr","year":"2008","unstructured":"Furr, M., Foster, J.S.: Checking type safety of foreign function calls. ACM Trans. Program. Lang. Syst. 30(4), 1\u201363 (2008)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"16_CR15","unstructured":"Haapala, A., M\u00e4\u00e4tt\u00e4, E., Jonatas, C.D., Ohtamaa, M., Necas, D.: Levenshtein Python C extension module (2021). https:\/\/github.com\/ztane\/python-Levenshtein\/. Accessed April 2021"},{"key":"16_CR16","doi-asserted-by":"publisher","unstructured":"Hu, M., Zhang, Y.: The Python\/C API: evolution, usage statistics, and bug patterns. In: SANER. IEEE (2020). https:\/\/doi.org\/10.1109\/SANER48275.2020.9054835","DOI":"10.1109\/SANER48275.2020.9054835"},{"key":"16_CR17","unstructured":"Jakubek, A., Ga\u0142czy\u0144ski, R.: Linked lists for CPython (2021). https:\/\/github.com\/ajakubek\/python-llist. Accessed April 2021"},{"key":"16_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-030-41600-3_1","volume-title":"Verified Software. Theories, Tools, and Experiments","author":"M Journault","year":"2020","unstructured":"Journault, M., Min\u00e9, A., Monat, R., Ouadjaout, A.: Combinations of reusable abstract domains for a multilingual static analyzer. In: Chakraborty, S., Navas, J.A. (eds.) VSTTE 2019. LNCS, vol. 12031, pp. 1\u201318. Springer, Cham (2020). https:\/\/doi.org\/10.1007\/978-3-030-41600-3_1"},{"key":"16_CR19","unstructured":"Journault, M., Min\u00e9, A., Monat, R., Ouadjaout, A.: MOPSA: modular open platform for static analysis (2021). https:\/\/gitlab.com\/mopsa\/mopsa-analyzer. Accessed April 2021"},{"key":"16_CR20","doi-asserted-by":"publisher","unstructured":"Kondoh, G., Onodera, T.: Finding bugs in Java native interface programs. In: ISSTA. ACM (2008). https:\/\/doi.org\/10.1145\/1390630.1390645","DOI":"10.1145\/1390630.1390645"},{"key":"16_CR21","doi-asserted-by":"publisher","unstructured":"Kristensen, E.K., M\u00f8ller, A.: Reasonably-most-general clients for JavaScript library analysis. In: ICSE. IEEE\/ACM (2019). https:\/\/doi.org\/10.1109\/ICSE.2019.00026","DOI":"10.1109\/ICSE.2019.00026"},{"key":"16_CR22","doi-asserted-by":"publisher","unstructured":"Lee, S., Lee, H., Ryu, S.: Broadening horizons of multilingual static analysis: semantic summary extraction from C code for JNI program analysis. In: ASE. IEEE (2020). https:\/\/doi.org\/10.1145\/3324884.3416558","DOI":"10.1145\/3324884.3416558"},{"key":"16_CR23","doi-asserted-by":"publisher","unstructured":"Li, S., Tan, G.: Finding bugs in exceptional situations of JNI programs. In: CCS. ACM (2009). https:\/\/doi.org\/10.1145\/1653662.1653716","DOI":"10.1145\/1653662.1653716"},{"key":"16_CR24","doi-asserted-by":"publisher","unstructured":"Li, S., Tan, G.: JET: exception checking in the Java native interface. In: SPLASH. ACM (2011). https:\/\/doi.org\/10.1145\/2048066.2048095","DOI":"10.1145\/2048066.2048095"},{"key":"16_CR25","doi-asserted-by":"publisher","first-page":"273","DOI":"10.1016\/j.scico.2014.01.018","volume":"89","author":"S Li","year":"2014","unstructured":"Li, S., Tan, G.: Exception analysis in the Java native interface. Sci. Comput. Program. 89, 273\u2013297 (2014)","journal-title":"Sci. Comput. Program."},{"key":"16_CR26","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"80","DOI":"10.1007\/978-3-662-44202-9_4","volume-title":"ECOOP 2014 \u2013 Object-Oriented Programming","author":"S Li","year":"2014","unstructured":"Li, S., Tan, G.: Finding reference-counting errors in Python\/C programs with affine analysis. In: Jones, R. (ed.) ECOOP 2014. LNCS, vol. 8586, pp. 80\u2013104. Springer, Heidelberg (2014). https:\/\/doi.org\/10.1007\/978-3-662-44202-9_4"},{"key":"16_CR27","unstructured":"Malcolm, D.: A static analysis tool for CPython extension code (2018). https:\/\/gcc-python-plugin.readthedocs.io\/en\/latest\/cpychecker.html. Accessed April 2021"},{"key":"16_CR28","doi-asserted-by":"publisher","unstructured":"Mao, J., Chen, Y., Xiao, Q., Shi, Y.: RID: finding reference count bugs with inconsistent path pair checking. In: ASPLOS. ACM (2016). https:\/\/doi.org\/10.1145\/2872362.2872389","DOI":"10.1145\/2872362.2872389"},{"issue":"3","key":"16_CR29","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/1498926.1498930","volume":"31","author":"J Matthews","year":"2009","unstructured":"Matthews, J., Findler, R.B.: Operational semantics for multi-language programs. ACM Trans. Program. Lang. Syst. 31(3), 1\u201344 (2009)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"16_CR30","unstructured":"Meyer, M.: Distance library (2021). https:\/\/github.com\/doukremt\/distance. Accessed April 2021"},{"key":"16_CR31","doi-asserted-by":"crossref","unstructured":"Min\u00e9, A.: Field-sensitive value analysis of embedded C programs with union types and pointer arithmetics. In: LCTES. ACM (2006)","DOI":"10.1145\/1134650.1134659"},{"issue":"1","key":"16_CR32","doi-asserted-by":"publisher","first-page":"31","DOI":"10.1007\/s10990-006-8609-1","volume":"19","author":"A Min\u00e9","year":"2006","unstructured":"Min\u00e9, A.: The octagon abstract domain. High. Order Symb. Comput. 19(1), 31\u2013100 (2006)","journal-title":"High. Order Symb. Comput."},{"key":"16_CR33","doi-asserted-by":"publisher","unstructured":"Monat, R., Ouadjaout, A., Min\u00e9, A.: Static type analysis by abstract interpretation of Python programs. In: ECOOP, Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2020). https:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2020.17","DOI":"10.4230\/LIPIcs.ECOOP.2020.17"},{"key":"16_CR34","doi-asserted-by":"publisher","unstructured":"Monat, R., Ouadjaout, A., Min\u00e9, A.: Value and allocation sensitivity in static Python analyses. In: SOAP@PLDI. ACM (2020). https:\/\/doi.org\/10.1145\/3394451.3397205","DOI":"10.1145\/3394451.3397205"},{"key":"16_CR35","doi-asserted-by":"publisher","unstructured":"Monat, R., Ouadjaout, A., Min\u00e9, A.: A multi-language static analysis of Python programs with native C extensions, July 2021. https:\/\/doi.org\/10.5281\/zenodo.5141314","DOI":"10.5281\/zenodo.5141314"},{"key":"16_CR36","unstructured":"Mu\u0142a, W., Ombredanne, P.: Pyahocorasick library (2021). https:\/\/github.com\/WojciechMula\/pyahocorasick. Accessed April 2021"},{"key":"16_CR37","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"223","DOI":"10.1007\/978-3-030-65474-0_11","volume-title":"Static Analysis","author":"A Ouadjaout","year":"2020","unstructured":"Ouadjaout, A., Min\u00e9, A.: A library modeling language for the static analysis of C programs. In: Pichardie, D., Sighireanu, M. (eds.) SAS 2020. LNCS, vol. 12389, pp. 223\u2013247. Springer, Cham (2020). https:\/\/doi.org\/10.1007\/978-3-030-65474-0_11"},{"key":"16_CR38","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"220","DOI":"10.1007\/978-3-540-71316-6_16","volume-title":"Programming Languages and Systems","author":"N Rinetzky","year":"2007","unstructured":"Rinetzky, N., Poetzsch-Heffter, A., Ramalingam, G., Sagiv, M., Yahav, E.: Modular shape analysis for dynamically encapsulated programs. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 220\u2013236. Springer, Heidelberg (2007). https:\/\/doi.org\/10.1007\/978-3-540-71316-6_16"},{"key":"16_CR39","unstructured":"van Rossum, G., Lehtosalo, J., Langa, \u0141.: Python Enhancement Proposal 484 (2021). https:\/\/www.python.org\/dev\/peps\/pep-0484\/. Accessed 03 Mar 2021"},{"key":"16_CR40","unstructured":"van Rossum, G.: The Python development team: Python\/C API reference manual (2021). https:\/\/docs.python.org\/3.8\/c-api\/index.html. Accessed April 2021"},{"key":"16_CR41","unstructured":"Schnell, I.: Bitarray library (2021). https:\/\/github.com\/ilanschnell\/bitarray. Accessed April 2021"},{"key":"16_CR42","unstructured":"Tan, G., Croft, J.: An empirical security study of the native code in the JDK. In: USENIX. USENIX Association (2008)"},{"key":"16_CR43","doi-asserted-by":"publisher","unstructured":"Tan, G., Morrisett, G.: ILEA: inter-language analysis across Java and C. In: OOPSLA. ACM (2007). https:\/\/doi.org\/10.1145\/1297027.1297031","DOI":"10.1145\/1297027.1297031"},{"key":"16_CR44","unstructured":"Typeshed contributors: Typeshed (2021). https:\/\/github.com\/python\/typeshed\/. Accessed April 2021"},{"key":"16_CR45","doi-asserted-by":"publisher","unstructured":"Wei, F., Lin, X., Ou, X., Chen, T., Zhang, X.: JN-SAF: precise and efficient NDK\/JNI-aware inter-language static analysis framework for security vetting of Android applications with native code. In: SIGSAC. ACM (2018). https:\/\/doi.org\/10.1145\/3243734.3243835","DOI":"10.1145\/3243734.3243835"}],"container-title":["Lecture Notes in Computer Science","Static Analysis"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-88806-0_16","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,10,13]],"date-time":"2021-10-13T17:39:55Z","timestamp":1634146795000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-88806-0_16"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021]]},"ISBN":["9783030888053","9783030888060"],"references-count":45,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-88806-0_16","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021]]},"assertion":[{"value":"13 October 2021","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"SAS","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Static Analysis Symposium","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Chicago, IL","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"USA","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2021","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"17 October 2021","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"19 October 2021","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"28","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"sas2021","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/staticanalysis.org\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Double-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"40","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"18","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"4","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"45% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"6","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}